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()
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)
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)
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()
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
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()
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
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
#!/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()
def __init__(self): #self.name = os.path.basename(__file__) self.mySensors = mySensors() self.getSensors() self.getSensorGroups() self.log("SensorMonitor started")
def __init__(self): self.mySensors = mySensors() self.sensors = self.mySensors.getCommands() self.lastRun = {} #save last action run time (delay) self.log("CmdMonitor started")