示例#1
0
    def __init__(self, macs=[], bt_device=''):
        """
        Start background process for get_datas and async task for notifying all subscribed observers

        Args:
            macs (list): MAC addresses
            bt_device (string): Bluetooth device id
        """

        self._run_flag = RunFlag()
        self._subjects = []

        m = Manager()
        q = m.Queue()

        # Use Manager dict to share data between processes
        self._shared_data = m.dict()
        self._shared_data['run_flag'] = True

        # Start data updater
        notify_thread = Thread(target=RuuviTagReactive._data_update,
                               args=(self._subjects, q, self._run_flag))
        notify_thread.start()

        # Start background process
        executor = ProcessPoolExecutor(1)
        executor.submit(_run_get_data_background, macs, q, self._shared_data,
                        bt_device)
示例#2
0
def _run_get_data_background(macs, queue, shared_data, bt_device):
    """
    Background process function for RuuviTag Sensors
    """

    run_flag = RunFlag()

    def add_data(data):
        if not shared_data['run_flag']:
            run_flag.running = False

        data[1]['time'] = str(datetime.now())
        queue.put(data)

    RuuviTagSensor.get_datas(add_data, macs, run_flag, bt_device)
示例#3
0
def start_reporting(**kwargs):
    flag = RunFlag()

    def handle_sigint(sig, frame):
        flag.running = False

    sensors = read_data()
    handler = RuuviDataHandler(sensors, **kwargs)
    signal(SIGINT, handle_sigint)

    while flag.running:
        try:
            RuuviTagSensor.get_datas(handler, None, flag)
        except KeyboardInterrupt:
            return
        except Exception:
            pass
示例#4
0
def listener(data, tag, interval):
    try:
        # RunFlag for stopping execution at desired time
        run_flag = RunFlag()
        def handle_data(values):
            # Send data to main process
            data[tag["index"]] = values[1]
            run_flag.running = False # Stop process
            time.sleep(interval) # Wait interval
            run_flag.running = True # Continue process

        RuuviTagSensor.get_datas(handle_data, tag["address"], run_flag)
    except ValueError:
        data[tag["index"]] = "RuuviTag address is not correct."
    except Exception as e:
        data[tag["index"]] = "Error happened while trying to read RuuviTag values."
        print(e)
示例#5
0
    def __init__(self, macs=[]):
        """
        Start background process for get_datas and async task for notifying all subscribed observers

        Args:
            macs (list): MAC addresses
        """

        self.subjects = []
        self.run_flag = RunFlag()

        m = Manager()
        q = m.Queue()

        # Start data updater
        notify_thread = Thread(target=RuuviTagReactive._data_update, args=(self.subjects, q, self.run_flag))
        notify_thread.start()

        # Start background process
        executor = ProcessPoolExecutor(1)
        executor.submit(RuuviTagReactive._run_get_data_background, macs, q, self.run_flag)
示例#6
0
        #elif (mac == outsideTag):
        #print("outsideTag temp", temp)
        #else:
        #print("error - unknown tag ", mac)

    RuuviTagSensor.get_datas(handle_data, None, run_flag)
    print("RuuviTagSensor returned")


# end of parallel threads

#
# main processing loop
#

run_flag = RunFlag()

# create and reset the relays
relay1 = PiRelay.Relay("RELAY1")
relay2 = PiRelay.Relay("RELAY2")
relay3 = PiRelay.Relay("RELAY3")
relay4 = PiRelay.Relay("RELAY4")

sensor = initSensor()  # env sensor
logger = logAction(loc)  # local logger
# note: slackHook imported from creds.py
slack = Slack(url=slackHook)

# Initialize library.
if (noDisplay is False):
    disp.begin()
tag = RuuviTag(list(datas.keys())[0])
tag.update()
print(tag.state)

if not tag.state:
    raise Exception('FAILED')
else:
    print('OK')

#
# RuuviTagSensor.get_datas
#
print_header('RuuviTagSensor.get_datas')

flag = RunFlag()


def handle_data(found_data):
    flag.running = False
    if not found_data:
        raise Exception('FAILED')
    else:
        print('OK')


RuuviTagSensor.get_datas(handle_data, run_flag=flag)

wait_for_finish(flag, 'RuuviTagSensor.get_datas')

#
示例#8
0
 def __init__(self, macs):
     self.run_flag = RunFlag()
     self.macs = macs
     self.macsWithData = {}
     self.dataReceivedFromAllTheTags = False
示例#9
0
import sys
import time, datetime
from ruuvitag_sensor.ruuvi import RuuviTagSensor, RunFlag
from ruuvitag_sensor.decoder import UrlDecoder
import threading
import urllib2, json
import settings

run_flag_outside = RunFlag()
run_flag_inside = RunFlag()

send_buffer_loc_1 = []
send_buffer_loc_2 = []


def get_timestamp():
    d = datetime.datetime.now()
    return time.mktime(d.timetuple())


def send_data(loc_id, found_data):
    url = settings.KERTTU_SERVER_URL + '/api/v1/weatherData'
    postdata = {
        'deviceID': 1,
        'locID': loc_id,
        'temperature': found_data[1]['temperature'],
        'pressure': found_data[1]['pressure'],
        'humidity': found_data[1]['humidity'],
        'battery': found_data[1]['battery'],
        'timestamp': get_timestamp()
    }