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
Exemplo n.º 2
0
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"]