Exemplo n.º 1
0
    def __init__(self):
        try:
            self.mySensors = mySensors()
        except:  # reconnect one more time if DB is busy
            time.sleep(2)
            self.mySensors = mySensors()

        self.getDevices()
        self.getSensors()
Exemplo n.º 2
0
    def __init__(self):
        try:
            self.mySensors = mySensors()
        except:  # reconnect one more time if DB is busy
            time.sleep(2)
            self.mySensors = mySensors()

        self.getDevices()
        self.getSensors()

        self.logHandler = myLogs('miio-class', 0o666)
Exemplo n.º 3
0
 def __init__(self):
     self.mySensors = mySensors()
     self.getSensorsActions()
     self.log("SensorMonitor started")
     self.lastRun = {}  #save last action run time (delay)
     self.lastChange = {}  # time of last changes
     self.lastCmdRun = {}  # time of last run of cmd (not sensor)
Exemplo n.º 4
0
 def getSensors(self):
     self.sensorsByAddr = {}
     self.sensorsByID = {}
     sensorsDB = mySensors()
     sensors = sensorsDB.getSensors({"type":"mqtt"}).values()
     for sensor in sensors:
         if not sensor['sensor'] in self.sensorsByAddr: self.sensorsByAddr[sensor['sensor']] = {} 
         self.sensorsByAddr[sensor['sensor']] = sensor.copy()
         if not sensor['sensor_id'] in self.sensorsByID: self.sensorsByID[sensor['sensor_id']] = {} 
         self.sensorsByID[str(sensor['sensor_id'])] = sensor.copy()
     sensorsDB.closeDB()
Exemplo n.º 5
0
    def send(self, rcpt, msg):
        dat = msg.copy()
        dat.update({
            'ttl': 1000,
            'priority': 'high',
            'id': self.ID
        })
        to = rcpt.split('=')

        try:
            dat[to[0]] = to[1]
        except IndexError:
            dat['device'] = rcpt

        success = False
        while not success and self.errorCounter < 2:
            try:
                response, content = self.SESSION.request(
                    self.API,
                    method="POST",
                    headers={
                        'Content-Type': 'application/json; charset=UTF-8'
                    },
                    body=json.dumps(dat))
                if response.status == 200 and content.decode() == '{}':
                    self.errorCounter = 0
                    success = True
                else:
                    self.errorCounter += 1
                    time.sleep(1)
            except:
                self.errorCounter += 1
                time.sleep(1)

            if not success:
                fcmSensor = 23
                state = mySensors().getSensor(fcmSensor)
                if state['state'] == 'ON':
                    mySensors().saveSensorState(fcmSensor, 'OFF', True)

        return success
Exemplo n.º 6
0
 def getSensors(self):
     self.sensorsByAddr = {}
     self.sensorsByID = {}
     self.mySensors = mySensors()
     sensors = self.mySensors.getSensors({"type": "arduino"}).values()
     for sensor in sensors:
         if not sensor['sensor'] in self.sensorsByAddr:
             self.sensorsByAddr[sensor['sensor']] = {}
         self.sensorsByAddr[sensor['sensor']] = sensor.copy()
         if not sensor['sensor_id'] in self.sensorsByID:
             self.sensorsByID[sensor['sensor_id']] = {}
         self.sensorsByID[str(sensor['sensor_id'])] = sensor.copy()
Exemplo n.º 7
0
 def updateSensorByAddr(self, addr, state, commit = True):
     ok = False
     sensor = self.getSensorByAddr(addr)
     #print(addr + " " + state)
     self.log(str(addr) + " " + state)
     if sensor and 'sensor_id' in sensor:
         try:
             # unable to use self.mySensors - mqtt callback is in another thred
             #print(str(sensor['sensor_id']) + " " + state)
             sensors = mySensors()
             sensors.saveSensorState(sensor['sensor_id'], state, commit)
             sensors.closeDB()
             self.log("Switched sensor " + str(sensor['sensor_id']) + " " + state)
         except Exception, e:
             self.log("*** ERROR *** " + str(e))
             pass
         ok = True
Exemplo n.º 8
0
    def getSensors(self):
        self.sensorsByAddr = {}
        self.sensorsByID = {}
        self.sensorsByNodeID = {}

        sensorsDB = mySensors()
        sensors = sensorsDB.getSensors({"type": "espnow"}).values()
        for sensor in sensors:
            if not sensor['sensor_id'] in self.sensorsByID:
                self.sensorsByID[sensor['sensor_id']] = {}
            self.sensorsByID[str(sensor['sensor_id'])] = sensor.copy()

            nodeName = self.getNodeId(sensor['sensor'].split('/')[0])
            self.sensorsByNodeID[nodeName] = str(sensor['sensor_id'])
            self.sensorsByAddr[sensor['sensor']] = str(sensor['sensor_id'])

        sensorsDB.closeDB()
        del sensorsDB
Exemplo n.º 9
0
#!/home/scripts/venv/python3/bin/python3
# -*- coding: utf-8 -*-
# Выключает выключатели света через zwave
# Эмуляция проходного выключателя в коридоре
# Старая версия (zwave - zwave) в файле hall-light-loop-switch.py
#
import sys,os,time
import RPi.GPIO as GPIO
import string
import subprocess
import zc.lockfile
sys.path.append('/home/scripts/libs')
from mySensors import mySensors
from myRunLock import myRunLock

sensor_id = int(sys.argv[1]);

lock = myRunLock(str(sensor_id))

mySensors = mySensors()
lightOn = mySensors.getSensor(65)['state'] == 'ON';
if (lightOn):
    subprocess.Popen(['/home/scripts/actions/espnow-switch.py', "65", 'POFF'])
else:
    subprocess.Popen(['/home/scripts/actions/espnow-switch.py', "65", 'PON'])
lock.release()
Exemplo n.º 10
0
 def __init__(self):
     #self.name = os.path.basename(__file__)
     self.mySensors = mySensors()
     self.getSensors()
     self.getSensorGroups()
     self.log("SensorMonitor started")
Exemplo n.º 11
0
 def __init__(self):
     self.mySensors = mySensors()
     self.sensors = self.mySensors.getCommands()
     self.lastRun = {}  #save last action run time (delay)
     self.log("CmdMonitor started")