EventGhost exempel med websockets

Moderator: Telldus

krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Hej, ser att du kör svenska menyer, borde inte påverka, jag kör engelska och bytte till svenska och det fortsätter att fungera...

Om jag jämför med min logg så ser jag att det fattas ett viktigt logg-entry, hos mig ser det ut så här och det skall komma då klienten ansluter:

Code: Select all

23:04:16   WebsocketSuite.ServerRecData (u'Home_Automation', ('127.0.0.1', 62541), u'WebSocket rocks')


Det verkar också som att klienten är ansluten, åtminstone partiellt eftersom du har följande korrekta typiska loggar:

Code: Select all

22:24:32            Client:  <socket._socketobject object at 0x045D1B58>
22:24:32            Message:  ON
22:24:32            Client:  <socket._socketobject object at 0x045D1B58>
22:24:32            Message:  Garage_TellStickDuo_ON
Det är websocket suite som försöker sända data till klienten men av någon anledning kommer det inte fram...

Såg också följande skumma felmeddelande i din logg:

Code: Select all

22:25:57   Traceback (most recent call last) (1544):
22:25:57     File "wx\_core.pyc", line 14660, in <lambda>
22:25:57     File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1899, in __init__
22:25:57       FillListCtrl()
22:25:57     File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1889, in FillListCtrl
22:25:57       ip, port = clnts[i].getpeername()
22:25:57     File "<string>", line 1, in getpeername
22:25:57     File "socket.pyc", line 165, in _dummy
22:25:57   error: [Errno 9] Bad file descriptor
Det tyder på att applikationen inte lyckades med att hitta vilken ip/port som klienten är kopplad till...kan förklara varför det inte fungerar. Men som sagt,vad beror detta på?

Jag har slut på ideer just nu

Kanske gör en enda zip fil med EG och allt som krävs och som fungerar så kan du prova om paketet kör hos dig

Funderar vidare...
mvh Walter
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Hur ser din mostvarande bild ut när du har anslutit en eller flera klienter?
Räknar räknaren för anslutna klienter upp?
Image1.png
Image1.png (34.56 KiB) Viewed 9658 times
Hur ser din motsvarande bild ut?
Image2.png
Image2.png (11.86 KiB) Viewed 9658 times
mvh Walter
Bigert
Posts: 61
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by Bigert »

Jodå, det räknar upp klienterna, men när jag ska titta på Clients så börjar felmeddelanden:

Anslutning klient 1:
18:51:21 Server Home_Automation: New client ('127.0.0.1', 52254) tries to connect
18:51:21 get_headers - data: "GET / HTTP/1.1\r\nOrigin: http://127.0.0.1:8282\r\nSec-WebSocket-Key1: AZ-27 + 1S7 $'6fE4 11 20\r\nSec-WebSocket-Key2: 3 29 9152^[/B6H!C5>`4\r\nConnection: Upgrade\r\nHost: 127.0.0.1:1235\r\nUpgrade: WebSocket\r\n\r\n<\x07\x8e\xabx\xc8\x93\x92"

Klickade på knappen clients:
18:51:32 Traceback (most recent call last) (1544):
18:51:32 File "wx\_core.pyc", line 14660, in <lambda>
18:51:32 File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1899, in __init__
18:51:32 FillListCtrl()
18:51:32 File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1889, in FillListCtrl
18:51:32 ip, port = clnts.getpeername()
18:51:32 File "<string>", line 1, in getpeername
18:51:32 File "socket.pyc", line 165, in _dummy
18:51:32 error: [Errno 9] Bad file descriptor

Ansluter klient 2:
18:52:34 Server Home_Automation: New client ('127.0.0.1', 52259) tries to connect
18:52:34 get_headers - data: 'GET / HTTP/1.1\r\nHost: 127.0.0.1:1235\r\nOrigin: http://127.0.0.1:8282\r\nSec-WebSocket-Key2: 109E7Z75 3531\r\nConnection: Upgrade\r\nSec-WebSocket-Key1: 1414b-P cO 3NJ41I7I1=6\r\nUpgrade: WebSocket\r\n\r\n\x15\xcf\x91\xc1\x1f\xad\xdeV'

Klickar på Clients-knappen igen:
18:52:48 Traceback (most recent call last) (1544):
18:52:48 File "wx\_core.pyc", line 14660, in <lambda>
18:52:48 File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1899, in __init__
18:52:48 FillListCtrl()
18:52:48 File "C:\Program Files\EventGhost\plugins\WebsocketSuite\__init__.py", line 1889, in FillListCtrl
18:52:48 ip, port = clnts.getpeername()
18:52:48 File "<string>", line 1, in getpeername
18:52:48 File "socket.pyc", line 165, in _dummy
18:52:48 error: [Errno 9] Bad file descriptor

18:53:01 Client: <socket._socketobject object at 0x05035B58>
18:53:01 Message: currDate_Time.1 2012-01-09 18:53

Mvh
Thomas Bigert
Tellstick Duo Batch3 FW5, Nexa/Jula-brytare, temp-mätare (Teknikmag), fuktmätare Ebay, HP MCE MS Remote, Efergy R2, Conrad-antenn.
EventGhost 0.4.1R1600, Telldus Center 2.1.1, SunTracker, EventPhone, websocketsuite, Win7x64, MySQL.

/Bigert
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Jag tolkar det som att det är ett problem i websocket suite, den lyckas inte göra resolve på ansluten klients ip-adress och port, någonting går uppenbarligen snett och därför kan heller inga updates skickas till klienten. Jag tror jag lägger in detta i forumet för EventGhost så får vi se om Pako kan se vad det är för fel.

Har du speciella nätverk av något slag eller bara standard?

mvh
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Jag har gjort en "mini"-version av EvenGhost där websockets fungerar perfekt hos mig. Vore intressant att se om den fungerar hos dig också. Problemet är zip-filen är för stor för att kunna laddas upp här (ca 55 mbyte). Om du PM:ar mig på EventGhost forumet kan jag försöka maila den till dig förutsatt att ditt mailsystem tillåter så stora bilagor. Den är konfigurerad för att un-zippas till rooten på C: och du behöver inte ta bort din andra EventGhost installation.

Har du någon till PC att testa med också i fall problemet är PC relaterat?

mvh
Bigert
Posts: 61
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by Bigert »

Hej Walter.
Ledsen för det sena svaret. Verkar som att PM är avstängd. Min mailbox klarar inte så stort mail.
Har satt upp en FTP, så om du SMS:ar din mailadress till 0706974894 så skickar jag instruktioner.

Kikade kikade lite mer på http://websocket.org/echo.html och testade Connect-funktionen. Blir disconnectad direkt även om hemsidan säger "This browser supports WebSocket". Disconnect-knappen borde ju finnas där för att koppla loss. Får du samma resultat?

Mvh
Thomas Bigert
Tellstick Duo Batch3 FW5, Nexa/Jula-brytare, temp-mätare (Teknikmag), fuktmätare Ebay, HP MCE MS Remote, Efergy R2, Conrad-antenn.
EventGhost 0.4.1R1600, Telldus Center 2.1.1, SunTracker, EventPhone, websocketsuite, Win7x64, MySQL.

/Bigert
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Hej Thomas, jag är själv på resande fot den här veckan

Jag får samma disconnect problem med Opera. Med Chrome fungerar det fint. Har du testat Firefox, den fungerar för mig om jag enablar websocket i den först även om sidan säger Uhhh först, så testar jag connect knappen och då går det fint.

Du kanske har sett att Pako har svarat på dina felmeddelanden på EventGhost forumet. Han behöver lite ytterligare info. Du kanske kan titta på det.

Förresten, jag hoppas du öppnar html-filen via http och inte via file...för det fungerar inte heller hos mig

mvh Walter
Image1.png
Image1.png (63.63 KiB) Viewed 9616 times
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Med anledning av tipset som gavs på EvenGhost forumet så har jag modifierat websocket suite pluginnen och lagt in ändringen (hos mig fungerar det sedan tidigare så jag ser ingen skillnad)

Du kan ju testa den och se om det hoppar igång

Du skall alltså byta ut __init__.py i katalogen \Program Files\EventGhost\plugins\WebsocketSuite

mvh
__init__.zip
(36.73 KiB) Downloaded 251 times
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Ytterligare en sak:
Om du testar med Chrome, prova att göra en extra refresh efter att du öppnat sidan

mvh
Bigert
Posts: 61
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by Bigert »

Hej Walter!

Det stämmer, jag öppnar filen som en vanlig adress inte som en fil.

Lade in den nya py-filen och startade Chrome. När jag nu surfade in på http://127.0.0.1:8282/house_pad.html så fungerar färgändring av knappar när man slår på och av och tid och datum dyker upp. TOPPEN, vilken lättnad. :clap: Underbart!

Installerade även Firefox och skulle slå på websockets, men den var redan påslagen. Här fungerar det också klockrent. Slår jag på en knapp i Chrome, så ändrar statusen även i Firefox och vice versa. Det här blir ju hur bra som helst.

Opera fungerar tyvärr inte trots detta.

Testade på en annan dator för att se att det går att nå webservern i EventGhost och det gick att styra switchar, men ingen återkoppling. Ska ta en titt på portöppning på EG-maskinen i helgen, har säkert med det att göra när websocket ska skicka info för nu fungerar ju websocket.

Tack för ett jättejobb, det hade jag aldrig löst själv. Hoppas jag får en chans att hjälpa någon annan gröngöling i framtiden. Jag återkopplar med ytterligare detaljer vartefter jag skräddarsyr lösningen. Kanske får jag störa dig med någon fråga om jag stöter på patrull, men jag ska läsa på om python och java så jag blir självgående. Nu ska jag bygga gränssnitt i väntan på två 7" Androidplattor.
Tellstick Duo Batch3 FW5, Nexa/Jula-brytare, temp-mätare (Teknikmag), fuktmätare Ebay, HP MCE MS Remote, Efergy R2, Conrad-antenn.
EventGhost 0.4.1R1600, Telldus Center 2.1.1, SunTracker, EventPhone, websocketsuite, Win7x64, MySQL.

/Bigert
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Härligt!

Nu när det fungerar känns det bra. Det var en annan (mycket erfaren) användare på EG forumet som hittade "buggen". Det fungerade ju för mig i alla mina PC datorer men som tur var, inte i hans :D

Jag har kört över internet och fått återkopplingen att fungera (fast jag stände porten snabbt igen). Du måste öppna websocket porten (1235 i vårt testfall) i brandväggarna, internt i ditt nätverk i Windows firewall och om du vill testa över internet, göra portforwarding i din router/bredbandsdelare om du har en sådan, men då också porten 8282 för webservern om du inte ändrat den.

Opera problemet har jag också lyckats skapa på en dator.

Detta med websockets är faktiskt en av de bästa sakerna på länge för webbteknik, tror det kom med HTML 5 eller så.

Det skall bli kul att se vad du designar, lägg gärna upp lite bilder senare.

mvh Walter
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Jag är ganska säker på att allt strul beror på problem med olika websocket versioner och stöd för dessa i dom olika browsers som vi använder. Jag själv tycker att dessa dokument är bra om man vill läsa om websockets:
http://tools.ietf.org/html/draft-ietf-h ... rotocol-17

Jag har kollat hur handskakningen skall vara och den är inte helt perfekt skriven i websocket suites. Jag har ändrat lite som jag tycker är mer korrekt. Det skulle vara intressant om du kunde testa den bifogade versionen som har också har mera debug loggning aktiverad (behåll/döp om den du har nu som fungerar) så kanske även Opera fungerar hos dig. För mig ser det ut som följer med de versioner av olika browsers som jag har:

Chrome: använder websockets draft-ietf-hybi-thewebsocketprotocol-13, fungerar bra men kan kräva en extra refresh vid start
BlackHawk: använder websockets draft-ietf-hybi-thewebsocketprotocol-8, fungerar bra men kan kräva en extra refresh vid start
Firefox: använder websockets draft-ietf-hybi-thewebsocketprotocol-8, fungerar bra men disconnectar efter en liten stund
Opera: använder websockets draft-hixie-thewebsocketprotocol, fungerar helt perfekt
__init__2012-01-14.zip
(36.81 KiB) Downloaded 243 times
Jag tror det viktiga för dig kommer att vara att Opera för Android fungerar eftersom du har Android enheter på g. Jag vet inte inte om det finns en Chrome version för Android och hur den i så fall fungerar på dessa men det är ju möjligt att det också går bra.

Jag har också fixat så att Firefox inte disconnectar, jag la till en keep alive funktion i WebUpdaterSuiteDuo
WebUpdaterSuiteDuo__2012-01-14.zip
(1.63 KiB) Downloaded 243 times
mvh Walter
Bigert
Posts: 61
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by Bigert »

Hej Walter.

Efter att ha laddat ner den senaste py-filen 2012-01-14 var det betydligt stabilare.
Har jobbat på mitt gränssnitt och återkommer med exempel. Nu är det körbart och bara att använda för resten av familjen. Suveränt!

Så här ser det ut hos mig:
Firefox 9.0.1 working short test
Opera Version 11.60, build 1185 working (with enable websockets)
Google Chrome 16.0.912.75 m instable
IE9 not working
Opera Mobile 11.50.ADR.1111101157 working (with enable websockets)
Android 2.3 standard browser not working
Tellstick Duo Batch3 FW5, Nexa/Jula-brytare, temp-mätare (Teknikmag), fuktmätare Ebay, HP MCE MS Remote, Efergy R2, Conrad-antenn.
EventGhost 0.4.1R1600, Telldus Center 2.1.1, SunTracker, EventPhone, websocketsuite, Win7x64, MySQL.

/Bigert
Eldritch
Posts: 16
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by Eldritch »

Hej!

Stort tack för denna fina instruktion och allt jobb med plugins till EG!

Jag såg på någon annan sida här på forumet, att du även uppdaterar sensorvärden med Websockets. Jag får dock inte till det.

Mina sensorvärden ser ut typ så här:
16:04:43 TellStickDuo.mandolyn.temperaturehumidity.11.Temperature: '25.5|2012-07-23 16:04:43'
16:04:43 TellStickDuo.mandolyn.temperaturehumidity.11.Humidity: '52|2012-07-23 16:04:43'

Om jag lägger till dem i WebCapture, så skickas bara mandolyn_TellStickDuo_temperaturehumidity vidare.
Lyssnar du på raw events, eller hur lyckas du sniffa fram rätt "data"?

/Jocke
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: EventGhost exempel med websockets

Post by krambriw »

Vad som skickas bestäms av koden nedan i klassen WebCapture

#eg.event.payload_copy = eg.event.payload är bortkommenterat och det är där du har datat du är ute efter
Sedan extraherar vi ut datat:
d = eg.event.payload_copy.split('|')[0]
och lägger till det till meddelandet som skickas
msg = m[0]+"_TellStickDuo_"+m[1]+"_"+d

Exemplet nedan är modifierat enligt ovan

Code: Select all

class WebCapture(eg.ActionClass):
        
    def __call__(self):
        eg.event.payload_copy = eg.event.payload
        eg.event.suffix_copy = eg.event.suffix

        if(
            (
                eg.event.string.find("TellStickDuo.") <> -1
                and
                eg.event.string.find("TellStickDuo.RawEvent") == -1
                and
                eg.event.string.find("TellStickDuo.ChangeEvent") == -1
            )
            or
                eg.event.string.find("HTTP.") <> -1
        ):
            m = eg.event.suffix_copy.split('.')
            d = eg.event.payload_copy.split('|')[0]
            msg = m[0]+"_TellStickDuo_"+m[1]+"_"+d
            self.plugin.SavePersistent(m[1], m[0])
            self.plugin.BroadcastMessage(msg)
            #print msg
            return

Post Reply