Beispiel #1
0
 def cancel_commands(addr):
     try:
         if devices.is_remote_device(addr):
             RemoteController.redirect_command(request, addr)
         else:
             device = devices.get_device(addr)
             device.cancel_commands()
             mqtt.publish_availability(device)
             ws.send_device_stats(device)
     except KeyError:
         pass
     print(' < HTTP: {} cancel_commands'.format(addr))
     sys.stdout.flush()
Beispiel #2
0
 def set_settings(addr):
     try:
         if devices.is_remote_device(addr):
             RemoteController.redirect_command(request, addr)
         else:
             device = devices.get_device(addr)
             for idx, value in device.settings.items():
                 new = request.json.get(idx)
                 if new != value:
                     device.send_setting(idx, new)
             mqtt.publish_availability(device)
             ws.send_device_stats(device)
     except KeyError:
         pass
     print(' < HTTP: {} set_settings'.format(addr))
     sys.stdout.flush()
Beispiel #3
0
 def set_timers(addr):
     try:
         if devices.is_remote_device(addr):
             RemoteController.redirect_command(request, addr)
         else:
             device = devices.get_device(addr)
             timers = device.timers
             for day, value in request.json['timers'].items():
                 if timers[int(day[0])][int(day[1])] != value:
                     device.send_timer(day, value)
             new_mode = int(request.json['mode'])
             if new_mode != (0
                             if int(device.settings['22'], 16) == 0 else 1):
                 device.send_setting('22', '{:02x}'.format(new_mode))
             mqtt.publish_availability(device)
             ws.send_device_stats(device)
     except KeyError:
         pass
     print(' < HTTP: {} set_timers'.format(addr))
     sys.stdout.flush()
Beispiel #4
0
 def set_mode(addr):
     mode = request.json.get('mode')
     try:
         if devices.is_remote_device(addr):
             RemoteController.redirect_command(request, addr)
         else:
             device = devices.get_device(addr)
             device.set_mode(mode)
             if device.group is not None:
                 for dev in device.group.devices:
                     mqtt.publish_availability(dev)
                     ws.send_device_stats(dev)
             else:
                 mqtt.publish_availability(device)
                 ws.send_device_stats(device)
     except KeyError:
         pass
     except ValueError:
         pass
     print(' < HTTP: {} mode {}'.format(addr, mode))
     sys.stdout.flush()
Beispiel #5
0
    def set_temp(addr):
        temp = float(request.json.get('temp'))
        try:
            if devices.is_remote_device(addr):
                RemoteController.redirect_command(request, addr)
            else:
                device = devices.get_device(addr)
                device.set_temperature(temp)
                if device.group is not None:
                    for dev in device.group.devices:
                        mqtt.publish_availability(dev)
                        ws.send_device_stats(dev)
                else:
                    mqtt.publish_availability(device)
                    ws.send_device_stats(device)

        except KeyError:
            pass
        except ValueError:
            pass
        print(' < HTTP: {} temp {}'.format(addr, temp))
        sys.stdout.flush()
Beispiel #6
0
            self.options['handler_class'] = QuietHandler
        self.server = make_server(self.host, self.port, handler, **self.options)
        self.server.serve_forever()

    def stop(self):
        # self.server.server_close() <--- alternative but causes bad fd exception
        self.server.shutdown()


class Httpd(threading.Thread):

    server = None

    def run(self):
        host = os.getenv("HTTP_LISTEN_ADDRESS")
        port = int(os.getenv("HTTP_PORT"))
        self.server = MyWSGIRefServer(port=port, host=host)
        bottle.run(server=self.server, reloader=False)
        print('HTTP Server stopped...')
        sys.stdout.flush()

    def shutdown(self):
        self.server.stop()


httpd = Httpd()
pageController = PageController(httpd_path)
commandsController = CommandsController()
remoteController = RemoteController()
deviceController = DeviceController()