No handlers could be found for logger "websocket"



  • Good morning,

    since connecting a new sensor to the 1-Wire network, getting the following error message „No handlers could be found for logger "websocket"“ via LXT Terminal.

    I use the following python 2.7 program:

    #!/bin/bash
    
    import websocket
    import json
    
    url = "ws://127.0.0.1:88/ws"
    
    def on_message(ws, message):
       obj = json.loads(message)
       dev = obj['dev']
       circuit = obj['circuit']
       value = obj['value']
       print message
    
    def on_error(ws, error):
       print error
    
    def on_close(ws):
       print "Connection closed"
    
    #receiving messages
    ws = websocket.WebSocketApp(url, on_message = on_message, on_error = on_error, on_close = on_close)
    ws.run_forever()
    
    #sending messages
    ws = websocket.WebSocket()
    ws.connect(url)
    ws.send('{"cmd":"set","dev":"relay","circuit":"3","value":"1"}')
    ws.close()
    

    The EVOK log having following message:

    AttributeError: 'DS2438' object has no attribute 'sensor_dev'
    2018-01-14 08:55:54,139 - evok - ERROR - Error in config section 1WINPUT_23 - 'DS2438' object has no attribute 'sensor_dev'
    Traceback (most recent call last):
      File "/opt/evok/config.py", line 221, in create_devices
        sensor = (Devices.by_int(SENSOR, sensor)).sensor_dev
    AttributeError: 'DS2438' object has no attribute 'sensor_dev'
    

    I appriciate your assitance.


  • administrators

    Hi @seecosmea,
    Could you post your config file? It seems like your 1Wire-DI is connected to a simple DS2438 sensor.

    I don't immediately see what's exactly the issue aside from this, and it would help track it down.



  • Good morining again,

    pls note that I do not have anymore messsages inside the EVOK log, pls find my modified config file below. But I still have the problem that I do not receive any JSON strings from my DS2438 sensors via above mention Python program in order to receive the infos via WS.

    I could get the JSON string only via wget but not via python ws - Here the string from my new CO2 Sensor:

    {"vad": "1.23", "vdd": "5", "circuit": "2656DC84000003B7", "time": 1515692607.33644, "temp": "4.82031", "interval": 15, "typ": "DS2438", "lost": false, "dev": "temp", "humidity": 39.25448718301667}
    

    Here my string from the new temp & humidity sensor:

    {"vad": "1.23", "vdd": "5", "circuit": "2656DC84000003B7", "time": 1515692607.33644, "temp": "4.82031", "interval": 15, "typ": "DS2438", "lost": false, "dev": "temp", "humidity": 39.25448718301667}
    
    #!!! Do not use '#' for comments !!!
    
    [MAIN]
    config_version = 2.4					
    use_experimental_api = False			; Currently in Alpha - known issues
    regenerate_api_docs = False				; Active only with the experimental API setting
    log_level = ERROR   					; One of INFO, DEBUG, WARNING, ERROR, CRITICAL
    log_file = /var/log/evok.log			; Log file to use; will be cleared on boot
    port = 8080								; !!! Internal API port - only change if you are certain you know what you are doing; FOR OUR WEB INTERFACE THE PORT SHOULD BE CHANGED IN "/etc/evok-nginx.conf" INSTEAD !!!
    ;modbus_port = 0
    ;modbus_address = *			
    webhook_enabled = False					; Enables webhook notification - see e.g. https://sendgrid.com/blog/whats-webhook/
    webhook_address = http://127.0.0.1:80   ; Put your server endpoint address here (e.g. http://123.123.123.123:/wh )
    webhook_device_mask = ["input","wd"]	; List of device types to notify on (written as a JSON list) - adding AI will generate a large amount of messages!
    webhook_complex_events = False			; EVOK will send POST requests with the same data as WebSocket, rather than an empty GET request
    wifi_control_enabled = False			; !!! REQUIRES THE UNIPIAP WIFI CONTROLLER TO BE INSTALLED !!! Will allow evok to control the internal Neuron wifi 
    soap_server_enabled = False				; Enables the simple SOAP server; use only if you need the functionality
    soap_server_port = 8081					; !!! IF SOAP SERVER IS ENABLED, THIS PORT NEEDS TO BE UNIQUE (i.e. different from the port setting above) !!!
    
    [OWBUS_1]
    owbus = --i2c=/dev/i2c-1:ALL     		; scanned bus (--i2c=/dev/i2c-1:ALL or localhost:2122 or 'u' for USB dongle)
    interval = 3          					; [s] default sensor reading
    scan_interval = 300    					; [s] how often is made searching
    
    ;[SENSOR_1]	     						; onewire thermometer
    ;bus = 1		     					; link to OWBUS_X
    ;address = 28527B930500001F
    ;type = DS18B20
    ;interval = 1
    
    [I2CBUS_1]
    busid = 1     							;[integer] id of bus /dev/i2c-X
    
    ;[EPROM_1]								;EPROM device will not be used anymore, eprom should be handled by kernel module
    ;i2cbus = 1
    ;address = 0x50
    ;size = 256
    
    [MCP_1]
    i2cbus = 1								; link to I2CBUS_X
    address = 0x20							; i2c address
    
    [RELAY_1]
    mcp = 1									; link to MCP_X
    pin = 7
    
    [RELAY_2]
    mcp = 1									; link to MCP_X
    pin = 6
    
    [RELAY_3]
    mcp = 1
    pin = 5
    
    [RELAY_4]
    mcp = 1
    pin = 4
    
    [RELAY_5]
    mcp = 1
    pin = 3
    
    [RELAY_6]
    mcp = 1
    pin = 2
    
    [RELAY_7]
    mcp = 1
    pin = 1
    
    [RELAY_8]
    mcp = 1
    pin = 0
    
    ;[AICHIP_1]
    ;i2cbus =1
    ;address = 0x68
    
    ;[AI_1]
    ;chip=1
    ;channel=0
    ;bits=18
    ;gain=1
    ;;correction = 5.558737622
    ;;correction = 5.564920867
    ;corr_rom = 1
    ;corr_addr = 0xf0
    ;interval=2
    
    ;[AI_2]
    ;chip=1
    ;channel=1
    ;bits=18
    ;gain=1
    ;;correction = 5.558737622
    ;;correction = 5.564920867
    ;corr_rom = 1
    ;corr_addr = 0xf4
    ;interval=1
    
    [GPIOBUS_1]
    
    [AO_1]
    gpiobus = 1
    frequency = 100
    
    [DI_1]
    gpiobus = 1
    pin=4
    debounce = 0
    ;Enable counting on rising/falling edge or disable it
    ;By default(or parameter not present) this function is disabled
    ;Can be turned on on all on-board digital inputs (not inputs on 1Wire or other extensions)
    ;counter_mode = rising
    ;counter_mode = falling
    ;counter_mode = disabled
    
    [DI_2]
    gpiobus = 1
    pin=17
    debounce = 0
    
    [DI_3]
    gpiobus = 1
    pin=27
    debounce = 0
    
    [DI_4]
    gpiobus = 1
    pin=23
    debounce = 0
    
    [DI_5]
    gpiobus = 1
    pin=22
    debounce = 0
    
    [DI_6]
    gpiobus = 1
    pin=24
    debounce = 0
    
    [DI_7]
    gpiobus = 1
    pin=11
    debounce = 0
    
    [DI_8]
    gpiobus = 1
    pin=7
    debounce = 0
    
    [DI_9]
    gpiobus = 1
    pin=8
    debounce = 0
    
    [DI_10]
    gpiobus = 1
    pin=9
    debounce = 0
    
    [DI_11]
    gpiobus = 1
    pin=25
    debounce = 0
    
    [DI_12]
    gpiobus = 1
    pin=10
    debounce = 0
    
    ;[DI_13]
    ;gpiobus = 1
    ;pin=31
    ;debounce = 0
    
    ;[DI_14]
    ;gpiobus = 1
    ;pin=30
    ;debounce = 0
    
    ;
    ;Example of 8xRelay extension module addon (EMO-R8) on address 0x21
    ;
    ;[MCP_2]
    ;i2cbus = 1
    ;address = 0x21
    
    ;[RELAY_9]
    ;mcp = 2
    ;pin = 7
    
    ;[RELAY_10]
    ;mcp = 2
    ;pin = 6
    
    ;[RELAY_11]
    ;mcp = 2
    ;pin = 5
    
    ;[RELAY_12]
    ;mcp = 2
    ;pin = 4
    
    ;[RELAY_13]
    ;mcp = 2
    ;pin = 3
    
    ;[RELAY_14]
    ;mcp = 2
    ;pin = 2
    
    ;[RELAY_15]
    ;mcp = 2
    ;pin = 1
    
    ;[RELAY_16]
    ;mcp = 2
    ;pin = 0
    
    ;
    ;Example of Analog Output extension module EMO-Ao4/12
    ;
    ;[PCA9685_1]
    ;i2cbus = 1
    ;address = 0x40
    ;frequency = 400
    ;
    ;[AO_2]
    ;pca = 1
    ;channel = 0
    ;
    ;[AO_3]
    ;pca = 1
    ;channel = 1
    ;
    ;[AO_4]
    ;pca = 1
    ;channel = 2
    ;
    ;[AO_5]
    ;pca = 1
    ;channel = 3
    
    
    ;Example of 1W-4R/4DI extension module, 1W-8R is almost the same just replace inputs with relays
    ;
    ; - First map a new 1Wire sensor with appropriate address, type, and interval
    ; - Can use both SENSOR or 1WDEVICE syntax
    ; - Reading interval is crucial to achieve expected performance, default interval is 15s
    ;
    
    [1WDEVICE_2]
    bus = 1
    address = 3AFF60340000009E 
    type = DS2413
    interval = 1
    
    [1WRELAY_10]
    sensor = 2
    pin = 0
    
    [1WINPUT_20]
    sensor = 2
    pin = 1
    
    [1WDEVICE_3]
    bus = 1
    address = 3A4D6B3400000087
    type = DS2413
    interval = 1
    
    [1WRELAY_11]
    sensor = 3
    pin = 0
    
    [1WINPUT_21]
    sensor = 3
    pin = 1
    
    [1WDEVICE_4]
    bus = 1
    address = 3AC3323400000018
    type = DS2413
    interval = 1
    
    [1WRELAY_12]
    sensor = 4
    pin = 0
    
    [1WINPUT_22]
    sensor = 4
    pin = 1
    
    [1WDEVICE_5]
    bus = 1
    address = 2656DC84000003B7
    type = DS2438
    interval = 1
    
    [1WINPUT_23]
    sensor = 5
    
    [1WDEVICE_6]
    bus = 1
    address = 265ADC84000003CA
    type = DS2438
    interval = 1
    
    [1WINPUT_23]
    sensor = 6
    
    
    ;[1WRELAY_11]
    ;sensor = 2
    ;pin = 1
    ;
    ;[1WRELAY_12]
    ;sensor = 2
    ;pin = 2
    ;
    ;[1WRELAY_13]
    ;sensor = 2
    ;pin = 3
    ;
    ;[1WINPUT_20]
    ;sensor = 2
    ;pin = 4
    ;
    ;[1WINPUT_21]
    ;sensor = 2
    ;pin = 5
    ;
    ;[1WINPUT_22]
    ;sensor = 2
    ;pin = 6
    ;
    ;[1WINPUT_23]
    ;sensor = 2
    ;pin = 7
    


  • Liegt mein Problem eventuell bei dem Python websocket / JSON module (import websocket - import json)



  • Good morning, could it be that the problem is related to the Python websocket / JSON module (import websocket - import json). I do receive still the error message : No handlers could be found for logger "websocket" if I start the program in LXTerminal: sudo python /home/pi/py4.py

    I receive after starting the DS18B20 temperature strings but not any JSON strings from DS2438 via the python program above. I would like to receive the JSON strings in my Gambas main program from that python script. Could you pls be so kind to assist....

    tks in advance



  • Good morning again,

    could you pls be so kind to let me know if I could expect any answer at all, I do have sill the sam problem that I receive the DS18B20 temperature strings but not any JSON strings from DS2438 via the python program above.

    I checked the UniPi forum every moring with the hope to get new hints on present subject but nothing at all. I guess that my problem is not your area of responsibility ?

    tks in advance


  • administrators

    The error "No handlers could be found for logger "websocket"" is from your client library, it means you haven't registered an output logger (appropriately enough).

    I am not sure what's causing the issue with the DS2438. Do you get any 1wire messages at all? Or indeed any other.



  • Good day,

    I do receive all JSON stings from my DS18B20 temperatur sensors and from my DS2413 (Wire Dual Channel Addressable Switch) but I do not receive any strings from DS2438 at moment. I could get the JSON string via the wget method or via http://127.0.0.1:88/rest/all.

    Do you have any idea on how I could get the strings via the above mentioned python program via Websocket; I actually do not understand why I do not receive the DS2438 strings...