[SOLVED] Python Plugin Omnik Inverters debug help needed

Python and python framework

Moderator: leecollings

Post Reply
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

[SOLVED] Python Plugin Omnik Inverters debug help needed

Post by sincze »

So I noticed some posts of fellow Domoticz users having issues wile using the Magic Packet solution to extract local data from their inverter. I setup a python3 proof of concept that can extract the data locally from the webinterface of the Omnik inverter itself.
Omnik Python.png
Omnik Python.png (4.28 KiB) Viewed 3664 times
This data should be easily packaged in a Python plugin.

The script only needs the following to do it's work.

Code: Select all

       import requests
       import re
       from requests.auth import HTTPBasicAuth
I have read through https://www.domoticz.com/wiki/Developin ... leshooting my plugin ' starts but does not give me any errors.

Code: Select all

2019-07-21 09:46:14.138 Status: (Omnik) Started.
2019-07-21 09:47:24.154 Status: (Omnik) Stop directive received.
2019-07-21 09:47:24.154 Status: (Omnik) Stopping threads.
Debugging is enabled (MODE6), however I don't see error messages.
I've read the issue of a missing import.
Python 'import' that are unsuccessful will stop the entrie plugin from importing and running unless they are wrapped within a 'try'/'except' pair. If a module is not found the Plugin Framework will provide as much information as it gets from Python. For example, an attempt to import fakemodule in a plugin called 'Google Devices' will be reported like this in the Domoticz log:

Code: Select all


try:
    import Domoticz
except ImportError:
    import fakeDomoticz as Domoticz

class BasePlugin:
    enabled = False
    lastPolled = 0
    lastResponse = 0

    def __init__(self):
        return

    def onStart(self):
       if Parameters["Mode6"] == "Debug":
           Domoticz.Debugging(1)
           Domoticz.Log("Debugger started, use 'telnet 0.0.0.0 4444' to connect")
           import rpdb
           rpdb.set_trace()
       else:
           Domoticz.Log("onStart called")
           Domoticz.Debugging(0)
       import requests
       import re
       from requests.auth import HTTPBasicAuth
       Domoticz.Log("onStart called")
       Domoticz.Log("Debugging Disabled")
However without any output it will be hard debugging. Suggestions on proper DEBUG setup are welcome to give the community another plugin.

Code: Select all

(to) 0.0.0.0 4444
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is '^]'.
> /home/pi/domoticz/plugins/Domoticz-Omnik/plugin.py(92)onStart()
-> import requests
(Pdb)
My Guess is requests is missing so the following is never executed, or should be done in a diferent way. ;-)

Code: Select all

r = requests.get(url, auth=HTTPBasicAuth(Parameters["Username"], Parameters["Password"]))
To avoid a slow Domoticz I guess I have to look into @Dnpwwo https://www.domoticz.com/forum/viewtopi ... 52#p161000
Last edited by sincze on Sunday 28 July 2019 11:48, edited 2 times in total.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
Dnpwwo
Posts: 820
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by Dnpwwo »

@sincze,

I always point people to the HTTP.py under /plugins/examples (or https://github.com/domoticz/domoticz/bl ... es/HTTP.py).

It connects to a remote web server and dumps the response dictionary if debug is on. I would suggest using "Connections+Python" level debugging so you can what is going on. Point it at your inverter instead of google.com, what could go wrong?

If you use a built in HTTP connection it will automatically inject a basic auth header for you if there are value in the Username and Password parameters.

rpdb is the only debugger I know that works, Visual Studio can step from a Python program into C but not the other way around AFAIK
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

Jups started with that one indeed this morning


In basic HTTP authentication, a request contains a header field of the form Authorization: Basic <credentials> , where credentials is the base64 encoding of id and password joined by a single colon.


That would be ideal.
I can parse the result with the already defined functions.

I added the Omnik hardware device to Domoticz but the username password IP address was not stored after pressing Add.
'devices are created Domoticz says'

Will start over must be some kind of typo.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

Adding

Code: Select all

       <param field="Address" label="IP Address" width="200px" required="true" default="192.168.1.100"/>
        <param field="Username" label="Inverter Username" width="200px" required="true" default="admin"/>
        <param field="Password" label="Inverter Password" width="200px" required="true" password="true"/>
Indeed generates bas64 authentication :D , tnx @Dnpwwo.

It seems the plugin only runs 1 time (OnStart / onConnect) after that I receive no more messages/heartbeats.
First onStart / onConnect the data is dumped to the log so I can see it successfully logged in. (no 401 message).
If I change the hardware to on/off domoticz locks up... and needs a restart.

Pfff In PHP I would have been finished by now :D :lol:
Spoiler: show

Code: Select all

2019-07-21 21:10:13.746 (Inverter) Device count: 0
2019-07-21 21:10:13.747 (Inverter) Pushing 'ProtocolDirective' on to queue
2019-07-21 21:10:13.747 (Inverter) Pushing 'ConnectDirective' on to queue
2019-07-21 21:10:13.747 (Inverter) Processing 'ProtocolDirective' message
2019-07-21 21:10:13.747 (Inverter) Protocol set to: 'HTTP'.
2019-07-21 21:10:13.747 (Inverter) Processing 'ConnectDirective' message
2019-07-21 21:10:13.747 (Inverter) Transport set to: 'TCP/IP', ***.***.**.**:80.
2019-07-21 21:10:13.747 (Inverter) Connect directive received, action initiated successfully.
2019-07-21 21:10:13.749 (Inverter) Pushing 'onConnectCallback' on to queue
2019-07-21 21:10:13.797 (Inverter) Processing 'onConnectCallback' message
2019-07-21 21:10:13.797 (Inverter) Calling message handler 'onConnect'.
2019-07-21 21:10:13.798 (Inverter) Google connected successfully.
2019-07-21 21:10:13.798 (Inverter) Pushing 'WriteDirective' on to queue
2019-07-21 21:10:13.798 (Inverter) Processing 'WriteDirective' message
2019-07-21 21:10:13.798 (Inverter) Sending 221 bytes of data
2019-07-21 21:10:13.798 (Inverter) 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 41 75 74 68 GET./.HTTP/1.1..Auth
2019-07-21 21:10:13.798 (Inverter) ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** orization:Basic.***
2019-07-21 21:10:13.798 (Inverter) ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ***************=..Co
2019-07-21 21:10:13.798 (Inverter) 6e 6e 65 63 74 69 6f 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 nnection:.keep-alive
2019-07-21 21:10:13.798 (Inverter) 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 44 6f 6d 6f 74 69 ..User-Agent:.Domoti
2019-07-21 21:10:13.798 (Inverter) 63 7a 2f 31 2e 30 0d 0a 48 6f 73 74 3a 20 31 39 32 2e 31 36 cz/1.0..Host:.192.16
2019-07-21 21:10:13.798 (Inverter) ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 8.**.**:80..Content-
2019-07-21 21:10:13.798 (Inverter) 54 79 70 65 3a 20 74 65 78 74 2f 78 6d 6c 3b 20 63 68 61 72 Type:.text/xml;.char
2019-07-21 21:10:13.798 (Inverter) 73 65 74 3d 75 74 66 2d 38 0d 0a 41 63 63 65 70 74 3a 20 43 set=utf-8..Accept:.C
2019-07-21 21:10:13.798 (Inverter) 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 ontent-Type:.text/ht
2019-07-21 21:10:13.798 (Inverter) 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 0d 0a 0d ml;.charset=UTF-8...
2019-07-21 21:10:13.798 (Inverter) 0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .
2019-07-21 21:10:13.810 (Inverter) Pushing 'ReadEvent' on to queue
2019-07-21 21:10:13.813 (Inverter) Pushing 'ReadEvent' on to queue
2019-07-21 21:10:13.849 (Inverter) Processing 'ReadEvent' message
2019-07-21 21:10:13.849 (Inverter) Received 221 bytes of data
2019-07-21 21:10:13.849 (Inverter) 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 6b 0d 0a 53 65 72 HTTP/1.1.200.Ok..Ser
2019-07-21 21:10:13.849 (Inverter) 76 65 72 3a 20 52 61 6c 69 6e 6b 20 48 54 54 50 44 0d 0a 44 ver:.Ralink.HTTPD..D
2019-07-21 21:10:13.849 (Inverter) 61 74 65 3a 20 54 68 75 2c 20 30 31 20 4a 61 6e 20 31 39 37 ate:.Thu,.01.Jan.197
2019-07-21 21:10:13.849 (Inverter) 30 20 31 35 3a 32 37 3a 31 36 20 47 4d 54 0d 0a 50 72 61 67 0.15:27:16.GMT..Prag
2019-07-21 21:10:13.849 (Inverter) 6d 61 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d ma:.no-cache..Cache-
2019-07-21 21:10:13.849 (Inverter) 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 Control:.no-cache..C
2019-07-21 21:10:13.849 (Inverter) 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 ontent-Type:.text/ht
2019-07-21 21:10:13.849 (Inverter) 6d 6c 3b 20 63 68 61 72 73 65 74 3d 0d 0a 4c 61 73 74 2d 4d ml;.charset=..Last-M
2019-07-21 21:10:13.849 (Inverter) 6f 64 69 66 69 65 64 3a 20 54 75 65 2c 20 31 30 20 4d 61 72 odified:.Tue,.10.Mar
2019-07-21 21:10:13.849 (Inverter) 20 32 30 31 35 20 30 39 3a 34 30 3a 32 38 20 47 4d 54 0d 0a .2015.09:40:28.GMT..
2019-07-21 21:10:13.849 (Inverter) 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d Connection:.close...
2019-07-21 21:10:13.849 (Inverter) 0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .
2019-07-21 21:10:13.849 (Inverter) Pushing 'onMessageCallback' on to queue
2019-07-21 21:10:13.849 (Inverter) Processing 'ReadEvent' message
2019-07-21 21:10:13.849 (Inverter) Received 359 bytes of data
2019-07-21 21:10:13.849 (Inverter) ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50 55 <!DOCTYPE.html.PU
2019-07-21 21:10:13.850 (Inverter) 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 58 48 BLIC."-//W3C//DTD.XH
2019-07-21 21:10:13.850 (Inverter) 54 4d 4c 20 31 2e 30 20 54 72 61 6e 73 69 74 69 6f 6e 61 6c TML.1.0.Transitional
2019-07-21 21:10:13.850 (Inverter) 2f 2f 45 4e 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 //EN"."http://www.w3
2019-07-21 21:10:13.850 (Inverter) 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 54 44 2f 78 .org/TR/xhtml1/DTD/x
2019-07-21 21:10:13.850 (Inverter) 68 74 6d 6c 31 2d 74 72 61 6e 73 69 74 69 6f 6e 61 6c 2e 64 html1-transitional.d
2019-07-21 21:10:13.850 (Inverter) 74 64 22 3e 20 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 td">.<html.xmlns="ht
2019-07-21 21:10:13.850 (Inverter) 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 tp://www.w3.org/1999
2019-07-21 21:10:13.850 (Inverter) 2f 78 68 74 6d 6c 22 3e 20 3c 68 65 61 64 3e 20 3c 6c 69 6e /xhtml">.<head>.<lin
2019-07-21 21:10:13.850 (Inverter) 6b 20 68 72 65 66 3d 22 63 73 73 2f 6d 61 73 74 65 72 2e 63 k.href="css/master.c
2019-07-21 21:10:13.850 (Inverter) 73 73 22 20 72 65 6c 3d 22 53 74 79 6c 65 73 68 65 65 74 22 ss".rel="Stylesheet"
2019-07-21 21:10:13.850 (Inverter) 20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20 2f 3e 20 .type="text/css"./>.
2019-07-21 21:10:13.850 (Inverter) 3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a <script.type="text/j
2019-07-21 21:10:13.850 (Inverter) 61 76 61 73 63 72 69 70 74 22 20 73 72 63 3d 22 6a 73 2f 6d avascript".src="js/m
2019-07-21 21:10:13.850 (Inverter) 61 73 74 65 72 2e 6a 73 22 20 63 68 61 72 73 65 74 3d 22 75 aster.js".charset="u
2019-07-21 21:10:13.850 (Inverter) 74 66 2d 38 22 3e 3c 2f 73 63 72 69 70 74 3e 20 3c 73 63 72 tf-8"></script>.<scr
2019-07-21 21:10:13.850 (Inverter) 69 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a 61 76 61 73 ipt.type="text/javas
2019-07-21 21:10:13.850 (Inverter) 63 72 69 70 74 22 3e 20 76 61 72 20 73 6c 61 6e 56 3d 22 .. cript">.var.slanV="
2019-07-21 21:10:13.530 Status: (Inverter) Started.
2019-07-21 21:10:13.743 Status: (Inverter) Entering work loop.
2019-07-21 21:10:13.743 Status: (Inverter) Initialized version 2.2.6, author 'Dnpwwo'
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

I started over.

Downloaded:
I always point people to the HTTP.py under /plugins/examples (or https://github.com/domoticz/domoticz/bl ... es/HTTP.py).
Checked with entering IP address only and that works.
I just receive the expected 401...

Code: Select all

2019-07-21 21:41:54.843 (fake auth) 48 54 54 50 2f 31 2e 31 20 34 30 31 20 55 6e 61 75 74 68 6f HTTP/1.1.401.Unautho
2019-07-21 21:41:54.844 (fake auth) 72 69 7a 65 64 0d 0a 53 65 72 76 65 72 3a 20 52 61 6c 69 6e rized..Server:.Ralin
2019-07-21 21:41:54.844 (fake auth) 6b 20 48 54 54 50 44 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20 k.HTTPD..Date:.Thu,.
...

Code: Select all

2019-07-21 21:40:04.697 (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-21 21:40:04.699 (fake auth) Processing 'onHeartbeatCallback' message
2019-07-21 21:40:04.699 (fake auth) Calling message handler 'onHeartbeat'.
2019-07-21 21:40:04.699 (fake auth) onHeartbeat called, run again in 5 heartbeats.
2019-07-21 21:40:14.699 (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-21 21:40:14.720 (fake auth) Processing 'onHeartbeatCallback' message
2019-07-21 21:40:14.721 (fake auth) Calling message handler 'onHeartbeat'.
2019-07-21 21:40:14.721 (fake auth) onHeartbeat called, run again in 4 heartbeats.
Now I added:

Code: Select all

       <param field="Username" label="Inverter Username" width="200px" required="true" default="admin"/>
        <param field="Password" label="Inverter Password" width="200px" required="true" password="true"/>
To enable bas64 auth... as decribed else on the forum.
Restart Domoticz...
Enter username and password in the plugin...

And now the Plugin will only run 1 time... No heartbeat...
If I remove the 2 lines from the plugin.... restart domoticz... All is working just fine again. Beats me.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
Dnpwwo
Posts: 820
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by Dnpwwo »

@sincze,

Very interesting.

Despite your request to keep the connection open (using connection: keep-alive) the inverter's web server has informed you that it will terminate the connection once it has transmitted the response (using connection: close). This is valid under HTTP 1.1 and is the only circumstance where the web server can respond without informing the client how long the response is (for any pedants reading this, chunked encoding has a length prefixed on every chunk rather than via the content-length header).

I've never seen a web server actually do this but the code is designed to send any buffered data to the plugin when the connection closes so this should work (although not tested for the HTTP protocol).

The log you have shown does not show the server closing the connection however which is probably why you don't get the message.

A question: Are you looking in the 'log' tab to get the debug details or running Domoticz from the command line? I ask because the 'log' tab does not always show all messages and is therefore not useful for troubleshooting.
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

Dnpwwo wrote: Monday 22 July 2019 7:05 @sincze,

Very interesting.

Despite your request to keep the connection open (using connection: keep-alive) the inverter's web server has informed you that it will terminate the connection once it has transmitted the response (using connection: close). This is valid under HTTP 1.1 and is the only circumstance where the web server can respond without informing the client how long the response is (for any pedants reading this, chunked encoding has a length prefixed on every chunk rather than via the content-length header).

I've never seen a web server actually do this but the code is designed to send any buffered data to the plugin when the connection closes so this should work (although not tested for the HTTP protocol).

The log you have shown does not show the server closing the connection however which is probably why you don't get the message.

A question: Are you looking in the 'log' tab to get the debug details or running Domoticz from the command line? I ask because the 'log' tab does not always show all messages and is therefore not useful for troubleshooting.
Tnx for the reply.
Did I find a bug :lol: , entitled for opening an issue :?:
Unfortunately the webserver does not support https.
Let me modify the domoticz.sh to log to an external file.
Also an idea could be indeed to run Domoticz from the command line, whatever helps best in debugging.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

@Dnpwwo.
Started domoticz by hand ./domoticz > log.txt
Please find attached the result. This log has the username + password field of the plugin enabled so will only run 1 time.
Spoiler: show

Code: Select all

2019-07-22 17:27:45.637  Status: Domoticz V4.11020 (c)2012-2019 GizMoCuz
2019-07-22 17:27:45.638  Status: Build Hash: 0df71c72f, Date: 2019-07-18 08:25:58
2019-07-22 17:27:45.638  Status: Startup Path: /home/pi/domoticz/
2019-07-22 17:27:45.663  Sunrise: 05:50:00 SunSet: 21:45:00
2019-07-22 17:27:45.663  Day length: 15:55:00 Sun at south: 13:47:00
2019-07-22 17:27:45.663  Civil twilight start: 05:07:00 Civil twilight end: 22:28:00
2019-07-22 17:27:45.663  Nautical twilight start: 04:06:00 Nautical twilight end: 23:29:00
2019-07-22 17:27:45.663  Astronomical twilight start: 02:09:00 Astronomical twilight end: 01:26:00
2019-07-22 17:27:45.804  Status: PluginSystem: Started, Python version '3.5.3'.
2019-07-22 17:27:45.813  Active notification Subsystems: (0/13)
2019-07-22 17:27:45.814  Status: WebServer(HTTP) started on address: :: with port 8080
2019-07-22 17:27:45.820  Status: WebServer(SSL) started on address: :: with port 443
2019-07-22 17:27:45.823  Starting shared server on: :::6144
2019-07-22 17:27:45.824  Status: TCPServer: shared server started...
2019-07-22 17:27:45.824  Status: RxQueue: queue worker started...
2019-07-22 17:27:47.825  Status: (fake auth) Started.
2019-07-22 17:27:47.826  Status: EventSystem: reset all events...
2019-07-22 17:27:47.828  Status: EventSystem: reset all device statuses...
2019-07-22 17:27:48.119  Status: Python EventSystem: Initalizing event module.
2019-07-22 17:27:48.120  Status: EventSystem: Started
2019-07-22 17:27:48.120  Status: EventSystem: Queue thread started...
2019-07-22 17:27:48.167  Status: PluginSystem: Entering work loop.
2019-07-22 17:27:48.373  Status: (fake auth) Entering work loop.
2019-07-22 17:27:48.374  Status: (fake auth) Initialized version 2.2.6, author 'Dnpwwo'
2019-07-22 17:27:48.376  (fake auth) Debug logging mask set to: PYTHON PLUGIN QUEUE IMAGE DEVICE CONNECTION MESSAGE 
2019-07-22 17:27:48.376  (fake auth) 'Name':'fake auth'
2019-07-22 17:27:48.376  (fake auth) 'StartupFolder':'/home/pi/domoticz/'
2019-07-22 17:27:48.376  (fake auth) 'Version':'2.2.6'
2019-07-22 17:27:48.376  (fake auth) 'Address':'***.***.***.***'
2019-07-22 17:27:48.377  (fake auth) 'Language':'en'
2019-07-22 17:27:48.377  (fake auth) 'Mode6':'-1'
2019-07-22 17:27:48.377  (fake auth) 'Database':'/home/pi/domoticz/domoticz.db'
2019-07-22 17:27:48.377  (fake auth) 'Username':'********'
2019-07-22 17:27:48.377  (fake auth) 'HomeFolder':'/home/pi/domoticz/plugins/google-working-auth/'
2019-07-22 17:27:48.377  (fake auth) 'Key':'Google3'
2019-07-22 17:27:48.377  (fake auth) 'Port':'0'
2019-07-22 17:27:48.377  (fake auth) 'Author':'Dnpwwo'
2019-07-22 17:27:48.377  (fake auth) 'Password':'*****************'
2019-07-22 17:27:48.377  (fake auth) 'DomoticzHash':'0df71c72f'
2019-07-22 17:27:48.377  (fake auth) 'DomoticzVersion':'4.11020'
2019-07-22 17:27:48.377  (fake auth) 'UserDataFolder':'/home/pi/domoticz/'
2019-07-22 17:27:48.377  (fake auth) 'HardwareID':'18'
2019-07-22 17:27:48.377  (fake auth) 'Mode1':'80'
2019-07-22 17:27:48.377  (fake auth) 'DomoticzBuildTime':'2019-07-18 08:25:58'
2019-07-22 17:27:48.377  (fake auth) Device count: 0
2019-07-22 17:27:48.377  (fake auth) Pushing 'ProtocolDirective' on to queue
2019-07-22 17:27:48.377  (fake auth) Pushing 'ConnectDirective' on to queue
2019-07-22 17:27:48.378  (fake auth) Processing 'ProtocolDirective' message
2019-07-22 17:27:48.378  (fake auth) Protocol set to: 'HTTP'.
2019-07-22 17:27:48.378  (fake auth) Processing 'ConnectDirective' message
2019-07-22 17:27:48.378  (fake auth) Transport set to: 'TCP/IP', ***.***.***.***:80.
2019-07-22 17:27:48.378  (fake auth) Connect directive received, action initiated successfully.
2019-07-22 17:27:48.389  (fake auth) Pushing 'onConnectCallback' on to queue
2019-07-22 17:27:48.428  (fake auth) Processing 'onConnectCallback' message
2019-07-22 17:27:48.429  (fake auth) Calling message handler 'onConnect'.
2019-07-22 17:27:48.429  (fake auth) Google connected successfully.
2019-07-22 17:27:48.429  (fake auth) Pushing 'WriteDirective' on to queue
2019-07-22 17:27:48.429  (fake auth) Processing 'WriteDirective' message
2019-07-22 17:27:48.429  (fake auth) Sending 221 bytes of data
2019-07-22 17:27:48.429  (fake auth)     47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 41 75 74 68     GET./.HTTP/1.1..Auth
2019-07-22 17:27:48.429  (fake auth)     6f 72 69 7a 61 74 69 6f 6e 3a 42 61 73 69 63 20 59 ** ** **     orization:Basic.****
2019-07-22 17:27:48.429  (fake auth)     ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **     ***************=..Ho
2019-07-22 17:27:48.429  (fake auth)     ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **     st:.***.***.**.**:80
2019-07-22 17:27:48.429  (fake auth)     0d 0a 41 63 63 65 70 74 3a 20 43 6f 6e 74 65 6e 74 2d 54 79     ..Accept:.Content-Ty
2019-07-22 17:27:48.429  (fake auth)     70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73     pe:.text/html;.chars
2019-07-22 17:27:48.429  (fake auth)     65 74 3d 55 54 46 2d 38 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e     et=UTF-8..Connection
2019-07-22 17:27:48.429  (fake auth)     3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 6f 6e 74 65 6e     :.keep-alive..Conten
2019-07-22 17:27:48.429  (fake auth)     74 2d 54 79 70 65 3a 20 74 65 78 74 2f 78 6d 6c 3b 20 63 68     t-Type:.text/xml;.ch
2019-07-22 17:27:48.430  (fake auth)     61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 55 73 65 72 2d 41 67     arset=utf-8..User-Ag
2019-07-22 17:27:48.430  (fake auth)     65 6e 74 3a 20 44 6f 6d 6f 74 69 63 7a 2f 31 2e 30 0d 0a 0d     ent:.Domoticz/1.0...
2019-07-22 17:27:48.430  (fake auth)     0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     .
2019-07-22 17:27:48.445  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:27:48.447  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:27:48.480  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:27:48.480  (fake auth) Received 221 bytes of data
2019-07-22 17:27:48.480  (fake auth)     48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 6b 0d 0a 53 65 72     HTTP/1.1.200.Ok..Ser
2019-07-22 17:27:48.480  (fake auth)     76 65 72 3a 20 52 61 6c 69 6e 6b 20 48 54 54 50 44 0d 0a 44     ver:.Ralink.HTTPD..D
2019-07-22 17:27:48.480  (fake auth)     61 74 65 3a 20 54 68 75 2c 20 30 31 20 4a 61 6e 20 31 39 37     ate:.Thu,.01.Jan.197
2019-07-22 17:27:48.480  (fake auth)     30 20 31 31 3a 33 37 3a 35 34 20 47 4d 54 0d 0a 50 72 61 67     0.11:37:54.GMT..Prag
2019-07-22 17:27:48.480  (fake auth)     6d 61 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d     ma:.no-cache..Cache-
2019-07-22 17:27:48.480  (fake auth)     43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43     Control:.no-cache..C
2019-07-22 17:27:48.480  (fake auth)     6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74     ontent-Type:.text/ht
2019-07-22 17:27:48.480  (fake auth)     6d 6c 3b 20 63 68 61 72 73 65 74 3d 0d 0a 4c 61 73 74 2d 4d     ml;.charset=..Last-M
2019-07-22 17:27:48.480  (fake auth)     6f 64 69 66 69 65 64 3a 20 54 75 65 2c 20 31 30 20 4d 61 72     odified:.Tue,.10.Mar
2019-07-22 17:27:48.481  (fake auth)     20 32 30 31 35 20 30 39 3a 34 30 3a 32 38 20 47 4d 54 0d 0a     .2015.09:40:28.GMT..
2019-07-22 17:27:48.481  (fake auth)     43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d     Connection:.close...
2019-07-22 17:27:48.481  (fake auth)     0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     .
2019-07-22 17:27:48.481  (fake auth) Pushing 'onMessageCallback' on to queue
2019-07-22 17:27:48.481  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:27:48.481  (fake auth) Received 359 bytes of data
2019-07-22 17:27:48.481  (fake auth)     ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50 55     <!DOCTYPE.html.PU
2019-07-22 17:27:48.481  (fake auth)     42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 44 20 58 48     BLIC."-//W3C//DTD.XH
2019-07-22 17:27:48.481  (fake auth)     54 4d 4c 20 31 2e 30 20 54 72 61 6e 73 69 74 69 6f 6e 61 6c     TML.1.0.Transitional
2019-07-22 17:27:48.481  (fake auth)     2f 2f 45 4e 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33     //EN"."http://www.w3
2019-07-22 17:27:48.481  (fake auth)     2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 54 44 2f 78     .org/TR/xhtml1/DTD/x
2019-07-22 17:27:48.481  (fake auth)     68 74 6d 6c 31 2d 74 72 61 6e 73 69 74 69 6f 6e 61 6c 2e 64     html1-transitional.d
2019-07-22 17:27:48.481  (fake auth)     74 64 22 3e 20 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74     td">.<html.xmlns="ht
2019-07-22 17:27:48.481  (fake auth)     74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39     tp://www.w3.org/1999
2019-07-22 17:27:48.481  (fake auth)     2f 78 68 74 6d 6c 22 3e 20 3c 68 65 61 64 3e 20 3c 6c 69 6e     /xhtml">.<head>.<lin
2019-07-22 17:27:48.481  (fake auth)     6b 20 68 72 65 66 3d 22 63 73 73 2f 6d 61 73 74 65 72 2e 63     k.href="css/master.c
2019-07-22 17:27:48.482  (fake auth)     73 73 22 20 72 65 6c 3d 22 53 74 79 6c 65 73 68 65 65 74 22     ss".rel="Stylesheet"
2019-07-22 17:27:48.482  (fake auth)     20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20 2f 3e 20     .type="text/css"./>.
2019-07-22 17:27:48.482  (fake auth)     3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a     <script.type="text/j
2019-07-22 17:27:48.482  (fake auth)     61 76 61 73 63 72 69 70 74 22 20 73 72 63 3d 22 6a 73 2f 6d     avascript".src="js/m
2019-07-22 17:27:48.482  (fake auth)     61 73 74 65 72 2e 6a 73 22 20 63 68 61 72 73 65 74 3d 22 75     aster.js".charset="u
2019-07-22 17:27:48.482  (fake auth)     74 66 2d 38 22 3e 3c 2f 73 63 72 69 70 74 3e 20 3c 73 63 72     tf-8"></script>.<scr
2019-07-22 17:27:48.482  (fake auth)     69 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a 61 76 61 73     ipt.type="text/javas
2019-07-22 17:27:48.482  (fake auth)     63 72 69 70 74 22 3e 20 76 61 72 20 73 6c 61 6e 56 3d 22 ..     cript">.var.slanV="
2019-07-22 17:28:56.141  [1;31mError: fake auth hardware (18) thread seems to have ended unexpectedly[0;0m
2019-07-22 17:29:10.147  [1;31mError: fake auth hardware (18) thread seems to have ended unexpectedly[0;0m
2019-07-22 17:29:17.836  Status: Closing application!...
2019-07-22 17:29:17.836  Status: Stopping worker...
2019-07-22 17:29:17.836  Status: RxQueue: queue worker stopped...
2019-07-22 17:29:18.336  Status: WebServer(HTTP) stopped
2019-07-22 17:29:18.837  Status: WebServer(SSL) stopped
2019-07-22 17:29:18.839  Status: TCPServer: shared server stopped
2019-07-22 17:29:18.839  Status: Stopping all hardware...
2019-07-22 17:29:18.839  Status: (fake auth) Stop directive received.
2019-07-22 17:34:18.692  [1;31mError: main thread seems to have ended or hung unexpectedly (last update 301.000000 seconds ago)[0;0m
2019-07-22 17:34:18.692  [1;31mError: Domoticz(16838) is exiting due to watchdog triggered...[0;0m
2019-07-22 17:34:18.725  [1;31mError: Failed to start gdb, will use backtrace() for printing stack frame
[0;0m
Please find attached the log for the plugin without username and password.
Spoiler: show

Code: Select all

2019-07-22 17:20:09.726  Status: Domoticz V4.11020 (c)2012-2019 GizMoCuz
2019-07-22 17:20:09.726  Status: Build Hash: 0df71c72f, Date: 2019-07-18 08:25:58
2019-07-22 17:20:09.727  Status: Startup Path: /home/pi/domoticz/
2019-07-22 17:20:09.759  Sunrise: 05:50:00 SunSet: 21:45:00
2019-07-22 17:20:09.759  Day length: 15:55:00 Sun at south: 13:47:00
2019-07-22 17:20:09.759  Civil twilight start: 05:07:00 Civil twilight end: 22:28:00
2019-07-22 17:20:09.759  Nautical twilight start: 04:06:00 Nautical twilight end: 23:29:00
2019-07-22 17:20:09.759  Astronomical twilight start: 02:09:00 Astronomical twilight end: 01:26:00
2019-07-22 17:20:09.914  Status: PluginSystem: Started, Python version '3.5.3'.
2019-07-22 17:20:09.923  Active notification Subsystems: (0/13)
2019-07-22 17:20:09.924  Status: WebServer(HTTP) started on address: :: with port 8080
2019-07-22 17:20:09.930  Status: WebServer(SSL) started on address: :: with port 443
2019-07-22 17:20:09.982  Starting shared server on: :::6144
2019-07-22 17:20:09.983  Status: TCPServer: shared server started...
2019-07-22 17:20:09.983  Status: RxQueue: queue worker started...
2019-07-22 17:20:11.984  Status: (fake auth) Started.
2019-07-22 17:20:11.985  Status: EventSystem: reset all events...
2019-07-22 17:20:11.986  Status: EventSystem: reset all device statuses...
2019-07-22 17:20:12.136  Status: Python EventSystem: Initalizing event module.
2019-07-22 17:20:12.137  Status: EventSystem: Started
2019-07-22 17:20:12.137  Status: EventSystem: Queue thread started...
2019-07-22 17:20:12.263  Status: PluginSystem: Entering work loop.
2019-07-22 17:20:12.438  Status: (fake auth) Entering work loop.
2019-07-22 17:20:12.438  Status: (fake auth) Initialized version 2.2.6, author 'Dnpwwo'
2019-07-22 17:20:12.440  (fake auth) Debug logging mask set to: PYTHON PLUGIN QUEUE IMAGE DEVICE CONNECTION MESSAGE 
2019-07-22 17:20:12.441  (fake auth) 'Mode1':'80'
2019-07-22 17:20:12.441  (fake auth) 'Port':'0'
2019-07-22 17:20:12.441  (fake auth) 'Key':'Google3'
2019-07-22 17:20:12.441  (fake auth) 'DomoticzHash':'0df71c72f'
2019-07-22 17:20:12.441  (fake auth) 'Version':'2.2.6'
2019-07-22 17:20:12.441  (fake auth) 'DomoticzBuildTime':'2019-07-18 08:25:58'
2019-07-22 17:20:12.441  (fake auth) 'HardwareID':'18'
2019-07-22 17:20:12.441  (fake auth) 'Language':'en'
2019-07-22 17:20:12.441  (fake auth) 'DomoticzVersion':'4.11020'
2019-07-22 17:20:12.441  (fake auth) 'Name':'fake auth'
2019-07-22 17:20:12.441  (fake auth) 'StartupFolder':'/home/pi/domoticz/'
2019-07-22 17:20:12.441  (fake auth) 'HomeFolder':'/home/pi/domoticz/plugins/google-working-auth/'
2019-07-22 17:20:12.441  (fake auth) 'UserDataFolder':'/home/pi/domoticz/'
2019-07-22 17:20:12.441  (fake auth) 'Database':'/home/pi/domoticz/domoticz.db'
2019-07-22 17:20:12.441  (fake auth) 'Address':'***.***.***.***'
2019-07-22 17:20:12.441  (fake auth) 'Mode6':'-1'
2019-07-22 17:20:12.441  (fake auth) 'Author':'Dnpwwo'
2019-07-22 17:20:12.441  (fake auth) Device count: 0
2019-07-22 17:20:12.441  (fake auth) Pushing 'ProtocolDirective' on to queue
2019-07-22 17:20:12.442  (fake auth) Pushing 'ConnectDirective' on to queue
2019-07-22 17:20:12.442  (fake auth) Processing 'ProtocolDirective' message
2019-07-22 17:20:12.442  (fake auth) Protocol set to: 'HTTP'.
2019-07-22 17:20:12.442  (fake auth) Processing 'ConnectDirective' message
2019-07-22 17:20:12.442  (fake auth) Transport set to: 'TCP/IP', ***.***.***.***:80.
2019-07-22 17:20:12.442  (fake auth) Connect directive received, action initiated successfully.
2019-07-22 17:20:12.445  (fake auth) Pushing 'onConnectCallback' on to queue
2019-07-22 17:20:12.492  (fake auth) Processing 'onConnectCallback' message
2019-07-22 17:20:12.492  (fake auth) Calling message handler 'onConnect'.
2019-07-22 17:20:12.492  (fake auth) Google connected successfully.
2019-07-22 17:20:12.493  (fake auth) Pushing 'WriteDirective' on to queue
2019-07-22 17:20:12.493  (fake auth) Processing 'WriteDirective' message
2019-07-22 17:20:12.493  (fake auth) Sending 179 bytes of data
2019-07-22 17:20:12.493  (fake auth)     47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 41 63 63 65     GET./.HTTP/1.1..Acce
2019-07-22 17:20:12.493  (fake auth)     70 74 3a 20 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65     pt:.Content-Type:.te
2019-07-22 17:20:12.493  (fake auth)     78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46     xt/html;.charset=UTF
2019-07-22 17:20:12.493  (fake auth)     2d 38 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 44 6f 6d 6f     -8..User-Agent:.Domo
2019-07-22 17:20:12.493  (fake auth)     74 69 63 7a 2f 31 2e 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e     ticz/1.0..Connection
2019-07-22 17:20:12.493  (fake auth)     3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 6f 6e 74 65 6e     :.keep-alive..Conten
2019-07-22 17:20:12.493  (fake auth)     74 2d 54 79 70 65 3a 20 74 65 78 74 2f 78 6d 6c 3b 20 63 68     t-Type:.text/xml;.ch
2019-07-22 17:20:12.493  (fake auth)     61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 48 6f 73 74 3a 20 31     arset=utf-8..Host:.1
2019-07-22 17:20:12.493  (fake auth)     ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 0a 0d 0a ..     **.***.**.**:80....
2019-07-22 17:20:12.508  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:20:12.508  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:20:12.508  (fake auth) Queued asyncronous read aborted (***.***.***.***:80), [2] End of file.
2019-07-22 17:20:12.508  (fake auth) Pushing 'DisconnectedEvent' on to queue
2019-07-22 17:20:12.543  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:20:12.543  (fake auth) Received 256 bytes of data
2019-07-22 17:20:12.544  (fake auth)     48 54 54 50 2f 31 2e 31 20 34 30 31 20 55 6e 61 75 74 68 6f     HTTP/1.1.401.Unautho
2019-07-22 17:20:12.544  (fake auth)     72 69 7a 65 64 0d 0a 53 65 72 76 65 72 3a 20 52 61 6c 69 6e     rized..Server:.Ralin
2019-07-22 17:20:12.544  (fake auth)     6b 20 48 54 54 50 44 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20     k.HTTPD..Date:.Thu,.
2019-07-22 17:20:12.544  (fake auth)     30 31 20 4a 61 6e 20 31 39 37 30 20 31 31 3a 33 30 3a 31 38     01.Jan.1970.11:30:18
2019-07-22 17:20:12.544  (fake auth)     20 47 4d 54 0d 0a 57 57 57 2d 41 75 74 68 65 6e 74 69 63 61     .GMT..WWW-Authentica
2019-07-22 17:20:12.544  (fake auth)     74 65 3a 20 42 61 73 69 63 20 72 65 61 6c 6d 3d 22 49 47 45     te:.Basic.realm="IGE
2019-07-22 17:20:12.544  (fake auth)     4e 2d 57 49 46 49 22 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d     N-WIFI"..Pragma:.no-
2019-07-22 17:20:12.544  (fake auth)     63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c     cache..Cache-Control
2019-07-22 17:20:12.544  (fake auth)     3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 6f 6e 74 65 6e 74 2d     :.no-cache..Content-
2019-07-22 17:20:12.544  (fake auth)     54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 0d 0a 43 6f 6e     Type:.text/html..Con
2019-07-22 17:20:12.544  (fake auth)     6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d 0a 3c 48     nection:.close....<H
2019-07-22 17:20:12.544  (fake auth)     54 4d 4c 3e 3c 48 45 41 44 3e 3c 54 49 54 4c 45 3e 34 30 31     TML><HEAD><TITLE>401
2019-07-22 17:20:12.544  (fake auth)     20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 54 .. .. .. ..     .Unauthorized</T
2019-07-22 17:20:12.544  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:20:12.544  (fake auth) Received 102 bytes of data
2019-07-22 17:20:12.544  (fake auth)     49 54 4c 45 3e 3c 2f 48 45 41 44 3e 0a 3c 42 4f 44 59 20 42     ITLE></HEAD>.<BODY.B
2019-07-22 17:20:12.544  (fake auth)     47 43 4f 4c 4f 52 3d 22 23 63 63 39 39 39 39 22 3e 3c 48 34     GCOLOR="#cc9999"><H4
2019-07-22 17:20:12.544  (fake auth)     3e 34 30 31 20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 48     >401.Unauthorized</H
2019-07-22 17:20:12.544  (fake auth)     34 3e 0a 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 72 65 71     4>.Authorization.req
2019-07-22 17:20:12.545  (fake auth)     75 69 72 65 64 2e 0a 3c 2f 42 4f 44 59 3e 3c 2f 48 54 4d 4c     uired..</BODY></HTML
2019-07-22 17:20:12.545  (fake auth)     3e 0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     >.
2019-07-22 17:20:12.545  (fake auth) Processing 'DisconnectedEvent' message
2019-07-22 17:20:12.545  (fake auth) Disconnect event received for '***.***.***.***:80'.
2019-07-22 17:20:12.545  (fake auth) Pushing 'onDisconnectCallback' on to queue
2019-07-22 17:20:12.545  (fake auth) Processing 'onDisconnectCallback' message
2019-07-22 17:20:12.545  (fake auth) Calling message handler 'onDisconnect'.
2019-07-22 17:20:12.545  (fake auth) onDisconnect called for connection to: ***.***.***.***:80
2019-07-22 17:20:22.440  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:20:22.464  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:20:22.464  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:20:22.464  (fake auth) onHeartbeat called, run again in 5 heartbeats.
2019-07-22 17:20:32.442  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:20:32.483  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:20:32.483  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:20:32.484  (fake auth) onHeartbeat called, run again in 4 heartbeats.
2019-07-22 17:20:42.444  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:20:42.451  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:20:42.451  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:20:42.452  (fake auth) onHeartbeat called, run again in 3 heartbeats.
2019-07-22 17:20:52.445  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:20:52.469  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:20:52.470  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:20:52.470  (fake auth) onHeartbeat called, run again in 2 heartbeats.
2019-07-22 17:21:02.447  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:02.488  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:02.488  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:02.488  (fake auth) onHeartbeat called, run again in 1 heartbeats.
2019-07-22 17:21:12.449  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:12.456  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:12.456  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:12.457  (fake auth) Pushing 'ConnectDirective' on to queue
2019-07-22 17:21:12.457  (fake auth) Processing 'ConnectDirective' message
2019-07-22 17:21:12.457  (fake auth) Transport set to: 'TCP/IP', ***.***.***.***:80.
2019-07-22 17:21:12.457  (fake auth) Connect directive received, action initiated successfully.
2019-07-22 17:21:12.460  (fake auth) Pushing 'onConnectCallback' on to queue
2019-07-22 17:21:12.507  (fake auth) Processing 'onConnectCallback' message
2019-07-22 17:21:12.508  (fake auth) Calling message handler 'onConnect'.
2019-07-22 17:21:12.508  (fake auth) Google connected successfully.
2019-07-22 17:21:12.508  (fake auth) Pushing 'WriteDirective' on to queue
2019-07-22 17:21:12.508  (fake auth) Processing 'WriteDirective' message
2019-07-22 17:21:12.508  (fake auth) Sending 179 bytes of data
2019-07-22 17:21:12.508  (fake auth)     47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 41 63 63 65     GET./.HTTP/1.1..Acce
2019-07-22 17:21:12.508  (fake auth)     70 74 3a 20 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65     pt:.Content-Type:.te
2019-07-22 17:21:12.508  (fake auth)     78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46     xt/html;.charset=UTF
2019-07-22 17:21:12.509  (fake auth)     2d 38 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 44 6f 6d 6f     -8..User-Agent:.Domo
2019-07-22 17:21:12.509  (fake auth)     74 69 63 7a 2f 31 2e 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e     ticz/1.0..Connection
2019-07-22 17:21:12.509  (fake auth)     3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 6f 6e 74 65 6e     :.keep-alive..Conten
2019-07-22 17:21:12.509  (fake auth)     74 2d 54 79 70 65 3a 20 74 65 78 74 2f 78 6d 6c 3b 20 63 68     t-Type:.text/xml;.ch
2019-07-22 17:21:12.509  (fake auth)     61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 48 6f 73 74 3a 20 31     arset=utf-8..Host:.1
2019-07-22 17:21:12.509  (fake auth)     ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 0a 0d 0a ..     **.***.**.**:80....
2019-07-22 17:21:12.520  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:21:12.521  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:21:12.521  (fake auth) Queued asyncronous read aborted (***.***.***.***:80), [2] End of file.
2019-07-22 17:21:12.521  (fake auth) Pushing 'DisconnectedEvent' on to queue
2019-07-22 17:21:12.559  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:21:12.559  (fake auth) Received 256 bytes of data
2019-07-22 17:21:12.560  (fake auth)     48 54 54 50 2f 31 2e 31 20 34 30 31 20 55 6e 61 75 74 68 6f     HTTP/1.1.401.Unautho
2019-07-22 17:21:12.560  (fake auth)     72 69 7a 65 64 0d 0a 53 65 72 76 65 72 3a 20 52 61 6c 69 6e     rized..Server:.Ralin
2019-07-22 17:21:12.560  (fake auth)     6b 20 48 54 54 50 44 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20     k.HTTPD..Date:.Thu,.
2019-07-22 17:21:12.560  (fake auth)     30 31 20 4a 61 6e 20 31 39 37 30 20 31 31 3a 33 31 3a 31 38     01.Jan.1970.11:31:18
2019-07-22 17:21:12.560  (fake auth)     20 47 4d 54 0d 0a 57 57 57 2d 41 75 74 68 65 6e 74 69 63 61     .GMT..WWW-Authentica
2019-07-22 17:21:12.560  (fake auth)     74 65 3a 20 42 61 73 69 63 20 72 65 61 6c 6d 3d 22 49 47 45     te:.Basic.realm="IGE
2019-07-22 17:21:12.560  (fake auth)     4e 2d 57 49 46 49 22 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d     N-WIFI"..Pragma:.no-
2019-07-22 17:21:12.560  (fake auth)     63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c     cache..Cache-Control
2019-07-22 17:21:12.560  (fake auth)     3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 6f 6e 74 65 6e 74 2d     :.no-cache..Content-
2019-07-22 17:21:12.560  (fake auth)     54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 0d 0a 43 6f 6e     Type:.text/html..Con
2019-07-22 17:21:12.561  (fake auth)     6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d 0a 3c 48     nection:.close....<H
2019-07-22 17:21:12.561  (fake auth)     54 4d 4c 3e 3c 48 45 41 44 3e 3c 54 49 54 4c 45 3e 34 30 31     TML><HEAD><TITLE>401
2019-07-22 17:21:12.561  (fake auth)     20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 54 .. .. .. ..     .Unauthorized</T
2019-07-22 17:21:12.561  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:21:12.561  (fake auth) Received 102 bytes of data
2019-07-22 17:21:12.561  (fake auth)     49 54 4c 45 3e 3c 2f 48 45 41 44 3e 0a 3c 42 4f 44 59 20 42     ITLE></HEAD>.<BODY.B
2019-07-22 17:21:12.561  (fake auth)     47 43 4f 4c 4f 52 3d 22 23 63 63 39 39 39 39 22 3e 3c 48 34     GCOLOR="#cc9999"><H4
2019-07-22 17:21:12.561  (fake auth)     3e 34 30 31 20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 48     >401.Unauthorized</H
2019-07-22 17:21:12.561  (fake auth)     34 3e 0a 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 72 65 71     4>.Authorization.req
2019-07-22 17:21:12.562  (fake auth)     75 69 72 65 64 2e 0a 3c 2f 42 4f 44 59 3e 3c 2f 48 54 4d 4c     uired..</BODY></HTML
2019-07-22 17:21:12.562  (fake auth)     3e 0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     >.
2019-07-22 17:21:12.562  (fake auth) Processing 'DisconnectedEvent' message
2019-07-22 17:21:12.562  (fake auth) Disconnect event received for '***.***.***.***:80'.
2019-07-22 17:21:12.562  (fake auth) Pushing 'onDisconnectCallback' on to queue
2019-07-22 17:21:12.562  (fake auth) Processing 'onDisconnectCallback' message
2019-07-22 17:21:12.562  (fake auth) Calling message handler 'onDisconnect'.
2019-07-22 17:21:12.563  (fake auth) onDisconnect called for connection to: ***.***.***.***:80
2019-07-22 17:21:22.451  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:22.482  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:22.483  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:22.483  (fake auth) onHeartbeat called, run again in 5 heartbeats.
2019-07-22 17:21:32.453  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:32.500  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:32.500  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:32.500  (fake auth) onHeartbeat called, run again in 4 heartbeats.
2019-07-22 17:21:42.455  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:42.468  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:42.468  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:42.468  (fake auth) onHeartbeat called, run again in 3 heartbeats.
2019-07-22 17:21:52.457  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:21:52.486  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:21:52.487  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:21:52.487  (fake auth) onHeartbeat called, run again in 2 heartbeats.
2019-07-22 17:22:02.459  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:02.506  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:02.506  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:02.506  (fake auth) onHeartbeat called, run again in 1 heartbeats.
2019-07-22 17:22:12.461  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:12.474  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:12.475  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:12.475  (fake auth) Pushing 'ConnectDirective' on to queue
2019-07-22 17:22:12.475  (fake auth) Processing 'ConnectDirective' message
2019-07-22 17:22:12.475  (fake auth) Transport set to: 'TCP/IP', ***.***.***.***:80.
2019-07-22 17:22:12.475  (fake auth) Connect directive received, action initiated successfully.
2019-07-22 17:22:12.478  (fake auth) Pushing 'onConnectCallback' on to queue
2019-07-22 17:22:12.525  (fake auth) Processing 'onConnectCallback' message
2019-07-22 17:22:12.526  (fake auth) Calling message handler 'onConnect'.
2019-07-22 17:22:12.526  (fake auth) Google connected successfully.
2019-07-22 17:22:12.526  (fake auth) Pushing 'WriteDirective' on to queue
2019-07-22 17:22:12.526  (fake auth) Processing 'WriteDirective' message
2019-07-22 17:22:12.526  (fake auth) Sending 179 bytes of data
2019-07-22 17:22:12.526  (fake auth)     47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 41 63 63 65     GET./.HTTP/1.1..Acce
2019-07-22 17:22:12.526  (fake auth)     70 74 3a 20 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65     pt:.Content-Type:.te
2019-07-22 17:22:12.527  (fake auth)     78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 46     xt/html;.charset=UTF
2019-07-22 17:22:12.527  (fake auth)     2d 38 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 44 6f 6d 6f     -8..User-Agent:.Domo
2019-07-22 17:22:12.527  (fake auth)     74 69 63 7a 2f 31 2e 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e     ticz/1.0..Connection
2019-07-22 17:22:12.527  (fake auth)     3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 6f 6e 74 65 6e     :.keep-alive..Conten
2019-07-22 17:22:12.527  (fake auth)     74 2d 54 79 70 65 3a 20 74 65 78 74 2f 78 6d 6c 3b 20 63 68     t-Type:.text/xml;.ch
2019-07-22 17:22:12.527  (fake auth)     61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 48 6f 73 74 3a 20 31     arset=utf-8..Host:.1
2019-07-22 17:22:12.527  (fake auth)     ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 0a 0d 0a ..     **.***.**.**:80....
2019-07-22 17:22:12.540  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:22:12.541  (fake auth) Pushing 'ReadEvent' on to queue
2019-07-22 17:22:12.541  (fake auth) Queued asyncronous read aborted (***.***.***.***:80), [2] End of file.
2019-07-22 17:22:12.541  (fake auth) Pushing 'DisconnectedEvent' on to queue
2019-07-22 17:22:12.577  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:22:12.577  (fake auth) Received 256 bytes of data
2019-07-22 17:22:12.578  (fake auth)     48 54 54 50 2f 31 2e 31 20 34 30 31 20 55 6e 61 75 74 68 6f     HTTP/1.1.401.Unautho
2019-07-22 17:22:12.578  (fake auth)     72 69 7a 65 64 0d 0a 53 65 72 76 65 72 3a 20 52 61 6c 69 6e     rized..Server:.Ralin
2019-07-22 17:22:12.578  (fake auth)     6b 20 48 54 54 50 44 0d 0a 44 61 74 65 3a 20 54 68 75 2c 20     k.HTTPD..Date:.Thu,.
2019-07-22 17:22:12.578  (fake auth)     30 31 20 4a 61 6e 20 31 39 37 30 20 31 31 3a 33 32 3a 31 38     01.Jan.1970.11:32:18
2019-07-22 17:22:12.578  (fake auth)     20 47 4d 54 0d 0a 57 57 57 2d 41 75 74 68 65 6e 74 69 63 61     .GMT..WWW-Authentica
2019-07-22 17:22:12.578  (fake auth)     74 65 3a 20 42 61 73 69 63 20 72 65 61 6c 6d 3d 22 49 47 45     te:.Basic.realm="IGE
2019-07-22 17:22:12.578  (fake auth)     4e 2d 57 49 46 49 22 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d     N-WIFI"..Pragma:.no-
2019-07-22 17:22:12.578  (fake auth)     63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c     cache..Cache-Control
2019-07-22 17:22:12.578  (fake auth)     3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 6f 6e 74 65 6e 74 2d     :.no-cache..Content-
2019-07-22 17:22:12.578  (fake auth)     54 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 0d 0a 43 6f 6e     Type:.text/html..Con
2019-07-22 17:22:12.579  (fake auth)     6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 0d 0a 3c 48     nection:.close....<H
2019-07-22 17:22:12.579  (fake auth)     54 4d 4c 3e 3c 48 45 41 44 3e 3c 54 49 54 4c 45 3e 34 30 31     TML><HEAD><TITLE>401
2019-07-22 17:22:12.579  (fake auth)     20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 54 .. .. .. ..     .Unauthorized</T
2019-07-22 17:22:12.579  (fake auth) Processing 'ReadEvent' message
2019-07-22 17:22:12.579  (fake auth) Received 102 bytes of data
2019-07-22 17:22:12.579  (fake auth)     49 54 4c 45 3e 3c 2f 48 45 41 44 3e 0a 3c 42 4f 44 59 20 42     ITLE></HEAD>.<BODY.B
2019-07-22 17:22:12.579  (fake auth)     47 43 4f 4c 4f 52 3d 22 23 63 63 39 39 39 39 22 3e 3c 48 34     GCOLOR="#cc9999"><H4
2019-07-22 17:22:12.579  (fake auth)     3e 34 30 31 20 55 6e 61 75 74 68 6f 72 69 7a 65 64 3c 2f 48     >401.Unauthorized</H
2019-07-22 17:22:12.579  (fake auth)     34 3e 0a 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 72 65 71     4>.Authorization.req
2019-07-22 17:22:12.580  (fake auth)     75 69 72 65 64 2e 0a 3c 2f 42 4f 44 59 3e 3c 2f 48 54 4d 4c     uired..</BODY></HTML
2019-07-22 17:22:12.580  (fake auth)     3e 0a .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     >.
2019-07-22 17:22:12.580  (fake auth) Processing 'DisconnectedEvent' message
2019-07-22 17:22:12.580  (fake auth) Disconnect event received for '***.***.***.***:80'.
2019-07-22 17:22:12.580  (fake auth) Pushing 'onDisconnectCallback' on to queue
2019-07-22 17:22:12.580  (fake auth) Processing 'onDisconnectCallback' message
2019-07-22 17:22:12.580  (fake auth) Calling message handler 'onDisconnect'.
2019-07-22 17:22:12.580  (fake auth) onDisconnect called for connection to: ***.***.***.***:80
2019-07-22 17:22:22.463  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:22.497  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:22.497  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:22.503  (fake auth) onHeartbeat called, run again in 5 heartbeats.
2019-07-22 17:22:32.465  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:32.471  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:32.471  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:32.471  (fake auth) onHeartbeat called, run again in 4 heartbeats.
2019-07-22 17:22:42.467  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:42.489  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:42.489  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:42.490  (fake auth) onHeartbeat called, run again in 3 heartbeats.
2019-07-22 17:22:52.469  (fake auth) Pushing 'onHeartbeatCallback' on to queue
2019-07-22 17:22:52.509  (fake auth) Processing 'onHeartbeatCallback' message
2019-07-22 17:22:52.509  (fake auth) Calling message handler 'onHeartbeat'.
2019-07-22 17:22:52.509  (fake auth) onHeartbeat called, run again in 2 heartbeats.
2019-07-22 17:22:52.997  Status: Closing application!...
2019-07-22 17:22:52.997  Status: Stopping worker...
2019-07-22 17:22:52.997  Status: RxQueue: queue worker stopped...
2019-07-22 17:22:53.498  Status: WebServer(HTTP) stopped
2019-07-22 17:22:53.999  Status: WebServer(SSL) stopped
2019-07-22 17:22:54.000  Status: TCPServer: shared server stopped
2019-07-22 17:22:54.000  Status: Stopping all hardware...
2019-07-22 17:22:54.000  Status: (fake auth) Stop directive received.
2019-07-22 17:22:54.001  (fake auth) Pushing 'onStopCallback' on to queue
2019-07-22 17:22:54.001  Status: (fake auth) Exiting work loop.
2019-07-22 17:22:54.012  (fake auth) Processing 'onStopCallback' message
2019-07-22 17:22:54.012  (fake auth) Calling message handler 'onStop'.
2019-07-22 17:22:54.012  (fake auth) onStop - Plugin is stopping.
2019-07-22 17:22:54.046  (fake auth) Deallocating connection object 'HTTP Test' (***.***.***.***:80).
2019-07-22 17:22:54.101  Status: (fake auth) Stopping threads.
2019-07-22 17:22:54.101  Status: (fake auth) Stopped.
2019-07-22 17:22:54.101  Status: Scheduler stopped...
2019-07-22 17:22:54.101  Status: EventSystem: Stopped...
2019-07-22 17:22:54.101  Status: EventSystem: Queue thread stopped...
2019-07-22 17:22:54.126  Status: EventSystem - Python stopped...
2019-07-22 17:22:54.127  Status: PluginSystem: Exiting work loop.
2019-07-22 17:22:54.148  Status: PluginSystem: Stopped.
2019-07-22 17:22:54.148  Status: Mainworker Stopped...
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

The inverter shows the following response after succesful login (GET / HTTP/1.1)
omnik inverter response.JPG
omnik inverter response.JPG (22.82 KiB) Viewed 3613 times
And the following (GET /js/status.js HTTP/1.1) if you request the data.
omnik inverter response-status.JPG
omnik inverter response-status.JPG (23.06 KiB) Viewed 3613 times
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
Dnpwwo
Posts: 820
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by Dnpwwo »

@sincze,

I had a better look at this last night and there are actually 3 problems with the way that the plugin http protocol is handling this.
  • The we server sends a response with no length but sends it in 2 parts: the response header followed by the payload. Because the header has no length and there is no payload Domoticz incorrectly decides that the http response is complete.
  • Because of the above, the protocol then treats the payload as a new response but then fails to parse it because it is invalid http.
  • The generic flush on disconnect (which would be called if the 2 issues above are resolved) needs to be overridden for http
I will try and reproduce the behavior locally, shouldn't be too hard to fix.
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by sincze »

@Dnpwwo, tnx a lot for looking into this. Really appreciated.

I reported it as issue here: https://github.com/domoticz/domoticz/issues/3542, however it was Closed and considered a plugin issue and not a Domoticz issue. I honestly have no clue :lol: .
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
Dnpwwo
Posts: 820
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Python Plugin Omink Inverters debug help needed

Post by Dnpwwo »

I have managed to reproduce the issue locally using a plugin I knocked up using the data you get back. This has allowed me to resolve the first 2 issues.

For some reason the buffered data is not getting sent to the plugin on connection close for HTTP clients, I need to check that out.
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omnik Inverters debug help needed

Post by sincze »

Haha nice, your python plugin / tcp knowledge exceeds mine by the size of your continent :lol: Go go go :lol:
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
Dnpwwo
Posts: 820
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Python Plugin Omnik Inverters debug help needed

Post by Dnpwwo »

@sincze,

Pushed a couple of changes that should solve this.

Available now if you build from source, otherwise in the next beta.
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omnik Inverters debug help needed

Post by sincze »

Currently on Domoticz V4.11031.
But installing cmake 3.15.1 as we speak, can't wait. :lol:
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omnik Inverters debug help needed

Post by sincze »

Currently on Domoticz V4.11034

HTTP Details (3):

Code: Select all

2019-07-27 18:31:55.822 (fake auth) --->'Data':'b'var version="H4.01.38Y1.0.09W1.0.08";var m2mMid="**********";var wlanMac="**:**:**:**:**:**";var m2mRssi="60%";var wanIp="***.***.***.***";var nmac="************";var fephy="off";var webData="NLDN************,NL1-V1.0-0118-4,V2.0-0028,omnik4000tl ,4000,30,200,30711,,3,";
It is working!
Now let's try to extract only the information I need.
As the result is somewhere in the retrieved GET data, this can be done in native python3 with

Code: Select all

import re

Code: Select all

s = re.search(r'(?<=webData=").*?(?=";)', result).group(0)
inverter_details = s.split(",")
@Dnpwwo, nice JOB!

Code: Select all

2019-07-27 18:44:51.739 (fake auth) Received Data: ['NLDN************', 'NL1-V1.0-0118-4', 'V2.0-0028', 'omnik4000tl ', '4000', '63', '201', '30711', '', '1', '']
And the extracting works.

Code: Select all

2019-07-27 18:48:43.018 (fake auth) Received Data: Current Power: 63.0 W
2019-07-27 18:48:43.018 (fake auth) Received Data: Daily Power: 2.01 kWh
2019-07-27 18:48:43.018 (fake auth) Received Data: Total Power: 3071.1 kWh
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: Python Plugin Omnik Inverters debug help needed

Post by sincze »

We are making progress.
plugin_preview.png
plugin_preview.png (35.03 KiB) Viewed 3557 times
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: [SOLVED] Python Plugin Omnik Inverters debug help needed

Post by sincze »

For my next project :lol: @Dnpwwo can we have it handle
cookies
as well that are provided after a login?
Have some ideas to to a POST -> Authenticate... and with the provided cookie I can obtain data from a different brand inverter.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
User avatar
sincze
Posts: 1302
Joined: Monday 02 June 2014 22:46
Target OS: Raspberry Pi / ODroid
Domoticz version: 2024.4
Location: Netherlands / Breda Area
Contact:

Re: [SOLVED] Python Plugin Omnik Inverters debug help needed

Post by sincze »

Some users reported a functioning plugin :D however every 5 minutes this message:

Code: Select all

2019-08-21 18:36:46.731 Error: CConnection_disconnect, disconnection request from 'Omnik omvormer' ignored. Transport does not exist.
Unfortunately I have no idea what would cause this. Or how to fix it.
https://github.com/sincze/Domoticz-Omni ... -523545162

Suggestions are welcome.
Pass2php
LAN: RFLink, P1, OTGW, MySensors
USB: RFXCom, ZWave, Sonoff 3
MQTT: ZIgbee2MQTT,
ZWAVE: Zwave-JS-UI
WIFI: Mi-light, Tasmota, Xiaomi Shelly
Solar: Omnik, PVOutput
Video: Kodi, Harmony HUB, Chromecast
Sensors: You name it I got 1.
Post Reply