Ejemplo n.º 1
0
 def __init__(self, host, port):
     """Create the RoundRobin object."""
     self.host = host
     self.port = port
     self.mqtt_client = MqttClient(host, port)
     self.thread = None
     self.stop_event = Event()
     self.active_requests = []
     self.app_args = [
         {
             "app_id": "netflix",
             "startup-args": {
                 "args": []
             },
             "args": {
                 "args": [
                     "m=https://api-global.netflix.com/catalog/titles/movie/80223967&trackId=14855318"
                 ]
             }
         },
         {
             "app_id": "prime-video",
             "startup-args": {
                 "args": []
             },
             "args": {
                 "contentId": "B015YJRQ8U",
                 "mediaType": "movie"
             }
         },
         {
             "app_id": "youtube",
             "startup-args": {},
             "args": {
                 "video_id": "KEcbFSaLpoM"
             }
         },
     ]
     self.logger = logging.getLogger(__name__)
Ejemplo n.º 2
0
    def onStart(self):

        try:
            #Domoticz.Trace(True)
            Domoticz.Heartbeat(10)

            self.PluginKey = "ToshibaHpMqtt"
            self.HardwareID = Parameters["HardwareID"]
            self.debugging = Parameters["Mode6"]
            if self.debugging == "Verbose":
                Domoticz.Debugging(2 + 4 + 8 + 16 + 64)
            if self.debugging == "Debug":
                Domoticz.Debugging(2)
            self.HeatpumpTopic = Parameters["Mode5"]
            self.HeatpumpSetTopic = self.HeatpumpTopic + "/set"
            self.RoomTempTopic = self.HeatpumpTopic + "/status"
            self.RemoteTempDeviceId = Parameters["Mode1"]
            self.DomoticzBaseUrl = Parameters["Mode2"]

            if (self.ShouldSendRemoteTemp() and not self.DomoticzBaseUrl):
                self.RemoteTempDeviceId = None
                Domoticz.Error(
                    "Domoticz base url required and not set in plugin parameters. Remote temp sending disabled"
                )

            try:
                self.RemoteTempMaxEllapsedMinutes = int(Parameters["Mode3"])
            except ValueError:
                self.RemoteTempMaxEllapsedMinutes = 30
                Domoticz.Error(
                    "Wrong parameter value for remote temp sensor maximum minutes, setting default : "
                    + str(self.RemoteTempMaxEllapsedMinutes))

            self.mappedDevicesByUnit = {}
            self.payloadKeyToDevice = bijection.Bijection()

            Domoticz.Debug("Mapping power")
            self.powerDeviceMapping = SwitchDeviceMapping(Devices,
                                                          Images,
                                                          self.PluginKey,
                                                          self.HardwareID,
                                                          "Power",
                                                          "POW",
                                                          "power",
                                                          usedByDefault=True,
                                                          switchType=0,
                                                          dzValues={
                                                              0: "OFF",
                                                              1: "ON"
                                                          })
            self.mappedDevicesByUnit[self.powerDeviceMapping.dzDevice.
                                     Unit] = self.powerDeviceMapping
            self.payloadKeyToDevice["power"] = self.powerDeviceMapping

            Domoticz.Debug("Mapping mode")
            self.modeDeviceMapping = SelectorDeviceMapping(
                Devices,
                Images,
                self.PluginKey,
                self.HardwareID,
                "Mode",
                "MODE",
                "mode",
                usedByDefault=True,
                dzLevelsCodes=[('Auto', 'AUTO'), ('Froid', 'COOL'),
                               ('Déshum.', 'DRY'), ('Chaud', 'HEAT'),
                               ('Ventil.', 'FAN')],
                offHidden=True)
            self.mappedDevicesByUnit[
                self.modeDeviceMapping.dzDevice.Unit] = self.modeDeviceMapping
            self.payloadKeyToDevice["mode"] = self.modeDeviceMapping

            Domoticz.Debug("Mapping fan")
            self.fanDeviceMapping = SelectorDeviceMapping(Devices,
                                                          Images,
                                                          self.PluginKey,
                                                          self.HardwareID,
                                                          "Flux",
                                                          "FAN",
                                                          "fan",
                                                          usedByDefault=True,
                                                          dzLevelsCodes=[
                                                              ('Auto', 'AUTO'),
                                                              ('Silence',
                                                               'QUIET'),
                                                              ('1', '1'),
                                                              ('2', '2'),
                                                              ('3', '3'),
                                                              ('4', '4')
                                                          ],
                                                          offHidden=True)
            self.mappedDevicesByUnit[
                self.fanDeviceMapping.dzDevice.Unit] = self.fanDeviceMapping
            self.payloadKeyToDevice["fan"] = self.fanDeviceMapping

            Domoticz.Debug("Mapping vane")
            self.vVaneDeviceMapping = SelectorDeviceMapping(
                Devices,
                Images,
                self.PluginKey,
                self.HardwareID,
                "Inclinaison",
                "VVANE",
                "vane",
                usedByDefault=True,
                dzLevelsCodes=[('Auto', 'AUTO'), ('1', '1'), ('2', '2'),
                               ('3', '3'), ('4', '4'), ('5', '5'),
                               ('Oscillant', 'SWING')],
                offHidden=True)
            self.mappedDevicesByUnit[self.vVaneDeviceMapping.dzDevice.
                                     Unit] = self.vVaneDeviceMapping
            self.payloadKeyToDevice["vane"] = self.vVaneDeviceMapping

            Domoticz.Debug("Mapping wvane")
            self.wVaneDeviceMapping = SelectorDeviceMapping(Devices,
                                                            Images,
                                                            self.PluginKey,
                                                            self.HardwareID,
                                                            "Direction",
                                                            "WVANE",
                                                            "wideVane",
                                                            usedByDefault=True,
                                                            dzLevelsCodes=[
                                                                ('<<', '<<'),
                                                                ('<', '<'),
                                                                ('V', '|'),
                                                                ('>', '>'),
                                                                ('>>', '>>'),
                                                                ('Oscillant',
                                                                 'SWING')
                                                            ],
                                                            offHidden=True)
            self.mappedDevicesByUnit[self.wVaneDeviceMapping.dzDevice.
                                     Unit] = self.wVaneDeviceMapping
            self.payloadKeyToDevice["wideVane"] = self.wVaneDeviceMapping

            Domoticz.Debug("Mapping setpoint")
            self.setpointDeviceMapping = SetpointDeviceMapping(
                Devices,
                Images,
                self.PluginKey,
                self.HardwareID,
                "Thermostat",
                "TEMPSET",
                "temperature",
                usedByDefault=True)
            self.mappedDevicesByUnit[self.setpointDeviceMapping.dzDevice.
                                     Unit] = self.setpointDeviceMapping
            self.payloadKeyToDevice["temperature"] = self.setpointDeviceMapping

            Domoticz.Debug("Mapping temperature")
            self.temperatureDevicemapping = TemperatureDeviceMapping(
                Devices,
                Images,
                self.PluginKey,
                self.HardwareID,
                "T° Split",
                "TEMP",
                "roomTemperature",
                usedByDefault=True)
            self.mappedDevicesByUnit[self.temperatureDevicemapping.dzDevice.
                                     Unit] = self.temperatureDevicemapping

            self.mqttserveraddress = Parameters["Address"].strip()
            self.mqttserverport = Parameters["Port"].strip()
            clientIdPrefix = 'Domoticz_' + Parameters['Key'] + '_' + str(
                Parameters['HardwareID'])
            self.mqttClient = MqttClient(self.mqttserveraddress,
                                         self.mqttserverport, clientIdPrefix,
                                         self.onMQTTConnected,
                                         self.onMQTTDisconnected,
                                         self.onMQTTPublish, None)
        except Exception as e:
            Domoticz.Error("Start error: " + str(e))
            self.mqttClient = None
Ejemplo n.º 3
0
    def run(self):

        sensors = None
        datalogger = None

        try:

            # initialise objects
            sensors = Sensors(self.T_OFFSET,self.P_OFFSET,self.H_OFFSET)
            datalogger = DataLogger(self.DATALOGFILE, self.DATALOGKEYS, self.DATALOGMAXFILESIZE)
            self.scheduler = HeaterScheduler()
            self.modemanager = ModeManager( scheduler=self.scheduler,
                                            callbackfunc=self.modemanagercallbackfunc)
            self.mqttclient = MqttClient(subscribelist=self.SUBSCRIBELIST)
            self.heatercontroller = HeaterController()
            
            # initialise state
            self.modemanager.setMode(self.modemanager.AUTO)

            # initial data
            t_avg,p_avg,h_avg = sensors.getData()

            # present ourselves
            self.mqttclient.publish({topics.IOTHERMSTATUS:'Active'})
            self.mqttclient.publish({topics.IOTHERMVERSION:__version__ +' '+ __status__})
            self.mqttclient.publish({topics.MODE:self.modemanager.currentmode.name})
            self.mqttclient.publish({topics.TARGETTEMPERATURE:self.modemanager.currentmode.targettemperature})

            t = 0
            
            while True:
               t_,p,h = sensors.getData()
               messages = self.mqttclient.getData()
               
               # use temperature value from mqtt
               if self.USE_OTHERTEMPERATURE and topics.OTHERTEMPERATURE in messages:
                   t = float( messages[topics.OTHERTEMPERATURE] )
            
               if not self.USE_OTHERTEMPERATURE:
                   t = t_
            
               # calculate averages
               t_avg = (t_avg + t)/2       
               p_avg = (p_avg + p)/2       
               h_avg = (h_avg + h)/2

               # calculate derivatives
               d_t = (t - t_avg)/self.REFRESH_SECONDS
               d_p = (p - p_avg)/self.REFRESH_SECONDS
               d_h = (h - h_avg)/self.REFRESH_SECONDS

               # process data from subscribed topics
               self.processMessages( messages )
           
               # prepare for publishing
               messages = self.prepareMessages(t, p, h, d_t, d_p, d_h)
               datalogger.log(messages)
               self.mqttclient.publish(messages)

               # update the heatercontroller with the current and target temperatures
               #print('targettemperature = {}'.format(self.modemanager.currentmode.targettemperature))
               self.heatercontroller.update(t,self.modemanager.currentmode.targettemperature)

               sleep(self.REFRESH_SECONDS)

        finally:
            print('IOThermostat: Stopping IOThermostat..')
            if datalogger:
                datalogger.close()
                
            if sensors:
                sensors.close()
                
            if self.scheduler:
                self.scheduler.close()
                
            if self.heatercontroller:
                self.heatercontroller.close()
                
            if self.mqttclient:
                self.mqttclient.close()
Ejemplo n.º 4
0
from RflinkInterface import RflinkInterface
from ProtocolPacket import ProtocolPacket
from mqttclient import MqttClient
import TranslatePacketValues
import json
import logger


logger = createLogger.logger()mt = MqttClient()


def convertered2json(line):
    
    func = TranslatePacketValues.translates
    try:
        for pp in ProtocolPacket(line):
            yield json.dumps({k: func(k, v) for k, v in pp.keyvaluepair.items()})
    except KeyError:
        logger.error(line)


def main():
    rflinkInterface = RflinkInterface()
    while True:
        for line in rflinkInterface:
            for json_ in convertered2json(line):
                logger.info(json_)
                mt.publish("433mhz/incomming", json_)


if __name__ == "__main__":
Ejemplo n.º 5
0
webserver = WebServer()
#webserver.start()
webThread = _thread.start_new_thread(webserver.start, ())

type = state.get_value('type')
if type == 'temperature':
    sensor = sensor.TemperatureSensor()
elif type == 'power':
    sensor = sensor.PowerSensor()
elif type == 'ambient':
    sensor = sensor.AmbientSensor()

webserver.router.set_sensor(sensor)

mqttClient = MqttClient(sensor=sensor)

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)

if not state.is_configured():
    print('Sensor not configured')

# Main loop
publish_delay = 500
check_server_delay = 100
last_publish = utime.ticks_ms()
print('entering main loop')
while True:
    if not util.wifi_is_connected():
        if state.is_configured():
Ejemplo n.º 6
0
        self._last_user_activity = time.time()
        self._activate_screensaver(False)
        return super().on_touch_down(touch)

    def _activate_screensaver(self, activate):
        if self._screensaver_active != activate:
            self._screensaver_active = activate
            try:
                with open('/sys/class/backlight/rpi_backlight/bl_power',
                          'w') as file:
                    file.write('1' if activate else '0')
            except:
                logger.error('Could not ' +
                             ('activate' if activate else 'deactivate') +
                             ' screensaver')


class DataLoggerApp(App):
    def build(self):
        return DataLoggerWidget()


if __name__ == '__main__':
    logger.error('Starting application')
    Config.set('graphics', 'width', '800')
    Config.set('graphics', 'height', '480')
    mqtt_client = MqttClient()
    mqtt_client.use_signals_config(signal_sources_config)
    mqtt_client.start()
    DataLoggerApp().run()
Ejemplo n.º 7
0
from flask import Flask, request
from mqttclient import MqttClient
from sense import messageAsync

app = Flask(__name__)
try:
    print("MQTT - Trying to connect")
    mqtt = MqttClient('mosquitto')
except:
    print("MQTT - Failed to connect")
    mqtt = None


@app.route('/')
def hello_world():
    return 'Hello World!'


@app.route('/banner', methods=['GET', 'POST'])
def banner():
    try:
        text = request.get_json().get('message')
    except:
        text = "Unicorn!"

    messageAsync(text)
    return text


if __name__ == '__main__':
    if mqtt:
Ejemplo n.º 8
0
    widgetlist.append(gardentemp)
    widgetlist.append(vorgartentemp)
    widgetlist.append(arbeitszimmertemp)
    widgetlist.append(arbeitszimmerhum)
    widgetlist.append(arbeitszimmerqual)
    widgetlist.append(loggiatemp)
    widgetlist.append(pingrouter)
    widgetlist.append(haustuerOffen)
    widgetlist.append(telefon)
    widgetlist.append(esKlingelt)
    widgetlist.append(esRegnet)
    widgetlist.append(allefenster)
    widgetlist.append(motion)
    widgetlist.append(aussentemperatur)

    client = MqttClient()
    client.subscribe("/Chattenweg5/Garten/temperature", gardentemp.update)
    client.subscribe("/Chattenweg5/Garten/rain", regenAlert)
    client.subscribe("/Chattenweg5/2OG-Loggia/raindrops", regenTropfen)
    client.subscribe("/Chattenweg5/Vorgarten/temperature",
                     vorgartentemp.update)
    client.subscribe("/Chattenweg5/Arbeitszimmer/temperature",
                     arbeitszimmertemp.update)
    client.subscribe("/Chattenweg5/Arbeitszimmer/humidity",
                     arbeitszimmerhum.update)
    client.subscribe("/Chattenweg5/Arbeitszimmer/CO2",
                     arbeitszimmerqual.update)
    client.subscribe("/Chattenweg5/2OG-Loggia/temperature", loggiatemp.update)
    client.subscribe("/Wallclock/Countdown", mycountdown.mqttstart)
    client.subscribe("/Wallclock/countdown", mycountdown.mqttstart)
    client.subscribe("/Chattenweg5/Wallclock/Countdown", mycountdown.mqttstart)