import json import Queue import Scheduler import socket import threading import time import traceback import sys import zmq import raspi_mon_sys.LoggerClient as LoggerClient import raspi_mon_sys.Utils as Utils __transport = LoggerClient.default_transport __mail_credentials_path = "/etc/mail_credentials.json" __mac_addr = Utils.getmac() # Queues of pending messages. __hourly_queue = Queue.PriorityQueue() __daily_queue = Queue.PriorityQueue() __weekly_queue = Queue.PriorityQueue() # Enums. __levels = LoggerClient.levels __schedules = LoggerClient.schedules # Mapping between schedule options and python queues. __schedule2queue = { str(__schedules.HOURLY): __hourly_queue, str(__schedules.DAILY): __daily_queue, str(__schedules.WEEKLY): __weekly_queue
import Queue import time import threading import traceback import raspi_mon_sys.LoggerClient as LoggerClient import raspi_mon_sys.Scheduler as Scheduler import raspi_mon_sys.Utils as Utils PENDING_DOCUMENTS_LENGTH_WARNING = 10000 # expected 40MB of messages for warning PENDING_DOCUMENTS_LENGTH_ERROR = 30000 # expected 120MB of messages for data loss PERIOD = 3600 # every 3600 seconds (1 hour) we send data to hour server assert PENDING_DOCUMENTS_LENGTH_ERROR > PENDING_DOCUMENTS_LENGTH_WARNING raspi_mac = Utils.getmac() logger = None mqtt_client = None house_data = None lock = threading.RLock() pending_documents = [] raspimon_message_queues = {} forecast_message_queues = {} def __enqueue_raspimon_message(client, userdata, topic, message): timestamp = message["timestamp"] data = message["data"] basetime = int(timestamp // PERIOD * PERIOD) lock.acquire()
""" import datetime import json import Queue import socket import threading import traceback import sys import zmq import raspi_mon_sys.LoggerClient as LoggerClient import raspi_mon_sys.Utils as Utils __transport = LoggerClient.default_transport __mac_addr = Utils.getmac() # Queues of pending messages. __hourly_queue = Queue.PriorityQueue() __daily_queue = Queue.PriorityQueue() __weekly_queue = Queue.PriorityQueue() # Enums. __levels = LoggerClient.levels __schedules = LoggerClient.schedules def __generate_message_line(msg): """Given a message it generates a string to be shown at screen or mail.""" time_str = datetime.datetime.strftime(msg["datetime"], "%c") host_str = socket.gethostname() name_str = msg["name"]