toddmedema / echo

For controlling local devices with the Amazon Echo
207 stars 84 forks source link

CRITICAL:root:Critical exception: __init__() takes exactly 3 arguments (2 given) #12

Open barMperez opened 6 years ago

barMperez commented 6 years ago
DEBUG:root:Listening for UPnP broadcasts
DEBUG:root:got local address of 192.168.1.8
DEBUG:root:UPnP broadcast listener: new device registered
DEBUG:root:FauxMo device 'Room Light' ready on 192.168.1.8:52000
DEBUG:root:Entering fauxmo polling loop
DEBUG:root:POST /upnp/control/basicevent1 HTTP/1.1
Host: 192.168.1.8:52000
Accept: */*
Content-type: text/xml; charset="utf-8"
SOAPACTION: "urn:Belkin:service:basicevent:1#GetBinaryState"
Content-Length: 299

<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:GetBinaryState></s:Body></s:Envelope>
DEBUG:root:Responding to ON for Room Light
CRITICAL:root:Critical exception: __init__() takes exactly 3 arguments (2 given)

I integrated with broadlink-python, at first all worked fine and now something went wrong. the code:

import fauxmo
import logging
import time
import broadlink
import time
import sys

from debounce_handler import debounce_handler

logging.basicConfig(level=logging.DEBUG)

class device_handler(debounce_handler):
    """Publishes the on/off state requested,
       and the IP address of the Echo making the request.
    """
    TRIGGERS = {"device": 52000}

    def act(self, client_address, state, name):
        if state is True:
            device = broadlink.rm(host=("192.168.1.10",80), mac=bytearray.fromhex("b4430dc3de82"))
            device.auth()
            device.host
            codeData = "e90a4200df0916091609160916090916091616090916091616090916091609160916091609161609160916091609091616090916160909160916091609160916091609160916e90a4200df0916091609160916090916091616090916091616090916091609160916091609161609160916091609091616090916160909160916091609160916091609160916"
            device.send_data(codeData.decode('hex'))
            return True
        else:
            device = broadlink.rm(host=("192.168.1.10",80), mac=bytearray.fromhex("b4430dc3de82"))
            device.auth()
            device.host
            codeData = "e90a4200df0909160916091609161609091609161609160909160916091609160916091616091609160909161609091616090916160909160916160916091609160909161609e90a4200df0909160916091609161609091609161609160909160916091609160916091616091609160909161609091616090916160909160916160916091609160909161609"
            device.send_data(codeData.decode('hex'))
            return True

if __name__ == "__main__":
    # Startup the fauxmo server
    fauxmo.DEBUG = True
    p = fauxmo.poller()
    u = fauxmo.upnp_broadcast_responder()
    u.init_socket()
    p.add(u)

    # Register the device callback as a fauxmo handler
    d = device_handler()
    for trig, port in d.TRIGGERS.items():
        fauxmo.fauxmo(trig, u, p, None, port, d)

    # Loop and poll for incoming Echo requests
    logging.debug("Entering fauxmo polling loop")
    while True:
        try:
            # Allow time for a ctrl-c to stop the process
            p.poll(100)
            time.sleep(0.1)
        except Exception, e:
            logging.critical("Critical exception: " + str(e))
            break