Watchdog and LED Device mixed in JSON/REST Interface



  • When I try to get the status of my watchdogs with i.e. http://unipi:8080/json/wd/1_01 I get back the status of the first LED:

    {"status": "success", "data": {"value": 0, "circuit": "1_01", "dev": "led", "glob_dev_id": 1}}
    

    This is the same output I get from http://unipi:8080/json/led/1_01. With wd 2_01 I get an internal server error, for led 2_01 the output is right.

    When I look at json/all, both watchdogs are there:

        {
          "circuit": "1_01",
          "value": 0,
          "glob_dev_id": 1,
          "dev": "wd",
          "timeout": 5000,
          "was_wd_reset": 0,
          "nv_save": 0
        },
        {
          "circuit": "2_01",
          "value": 0,
          "glob_dev_id": 1,
          "dev": "wd",
          "timeout": 5000,
          "was_wd_reset": 0,
          "nv_save": 0
        },
    

    What would be the right Statement to get (and set) watchdog states?
    The web interface shows the values, but no changes are possible.
    I run Fw: v5.31 on board E_8Di8Ro.



  • Hi @Joerg!

    This looks like a bug in EVOK. The /rest/wd interface should return it correctly, I'll fix this in the github repository shortly, but it may take a little while before it gets into a debian package.

    Once the update appears on GitHub you may be able to update EVOK manually by overwriting your /opt/evok/lib/python2.7/site-packages/evok/evok.py with the new version, or you can wait until the next EVOK release.



  • Hi Tomas,

    thanks a lot for the quick answer. You are right, the /rest/wd returns the right values, but I'm still not able to activate the watchdogs:

    $ /usr/bin/curl --request POST --url http://unipi:8080/rest/wd/1_01 --data 'value=1'
    {"result": {"circuit": "1_01", "value": 0, "glob_dev_id": 1, "dev": "wd", "timeout": 5000, "was_wd_reset": 0, "nv_save": 0}, "success": true}
    $ /usr/bin/curl --request GET --url http://unipi:8080/rest/wd/1_01 --data ''
    {"circuit": "1_01", "value": 0, "glob_dev_id": 1, "dev": "wd", "timeout": 5000, "was_wd_reset": 0, "nv_save": 0}
    

    Whereas setting of ULED works:

    $ /usr/bin/curl --request POST --url http://unipi:8080/rest/led/1_01 --data 'value=1'
    {"result": {"value": 1, "circuit": "1_01", "dev": "led", "glob_dev_id": 1}, "success": true}
    $ /usr/bin/curl --request GET --url http://unipi:8080/rest/led/1_01 --data ''
    {"value": 1, "circuit": "1_01", "dev": "led", "glob_dev_id": 1}
    

    I also tried setting it with the sample web interface, led works, watchdog does not.



  • It should be fixed in the latest Master development version on GitHub, but it may take a little while before the next release is done. You can test it out yourself by replacing the file as detailed above.



  • Sorry Tomas, maybe I have problems understanding watchdog operation. I have the new evok.py in place and when trying to activate (not to perform manual reset) the watchdog on the web interface I get:

    [I 190116 08:04:54 web:2064] 304 GET /rest/wd/1_01/ (::1) 4.81ms
    [I 190116 08:04:59 neuron:1296] Performed reset of board 1_01
    [I 190116 08:04:59 web:2064] 200 POST /rest/wd/1_01/ (127.0.0.1) 13.44ms
    

    The watchog stays inactive. Sometimes my Neuron stops working (every second LED on the main unit is blinking) and a manual power cycle is needed.