phifogg / ioBroker.sainlogic

An IoBroker Adapter for Sainlogic based weather stations
MIT License
20 stars 11 forks source link

Sainlogic WS 3500 & zwei ioBroker-Instanzen #147

Closed Pandia22 closed 1 year ago

Pandia22 commented 1 year ago

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

**Describe the bug** 

Bei mir laufen zwei identische ioBroker-Server auf unterschiedlicher Hardware. Auf dem ersten Server ist des problemlos gelungen die Wetterstation Sainlogic WS3500 mit dem gleichnamigen Adapter in das System zu integrieren. Auf den zweiten startet der Adapter und ist grün. Es werden jedoch keine Wetterdaten geschrieben.

 

**To Reproduce** 

Steps to reproduce the behavior:

Start – Stop des Adpaters

 

**Expected behavior** 

Aktualisierung der Datenpunkte auf beiden ioBroker-Servern.

 

**Screenshots & Logfiles** 

If applicable, add screenshots and logfiles to help explain your problem.

sainlogic.0 | 2023-02-02 08:12:31.231 | info | Starting Listener -- | -- | -- | -- sainlogic.0 | 2023-02-02 08:12:31.230 | debug | Forward URL: sainlogic.0 | 2023-02-02 08:12:31.229 | debug | Listener protocol: ecowitt sainlogic.0 | 2023-02-02 08:12:31.228 | debug | Listener path: /weatherstation/data sainlogic.0 | 2023-02-02 08:12:31.228 | debug | Listener port: 45000 sainlogic.0 | 2023-02-02 08:12:31.227 | debug | Listener IP: 0.0.0.0 sainlogic.0 | 2023-02-02 08:12:31.173 | info | starting. Version 0.10.0 in /opt/iobroker/node_modules/iobroker.sainlogic, node: v19.3.0, js-controller: 4.0.24 sainlogic.0 | 2023-02-02 08:12:30.892 | debug | States connected to redis: 127.0.0.1:9000 sainlogic.0 | 2023-02-02 08:12:30.848 | debug | States create User PubSub Client sainlogic.0 | 2023-02-02 08:12:30.846 | debug | States create System PubSub Client sainlogic.0 | 2023-02-02 08:12:30.820 | debug | Redis States: Use Redis connection: 127.0.0.1:9000 sainlogic.0 | 2023-02-02 08:12:30.778 | debug | Objects connected to redis: 127.0.0.1:9001 sainlogic.0 | 2023-02-02 08:12:30.770 | debug | Objects client initialize lua scripts sainlogic.0 | 2023-02-02 08:12:30.684 | debug | Objects create User PubSub Client sainlogic.0 | 2023-02-02 08:12:30.682 | debug | Objects create System PubSub Client sainlogic.0 | 2023-02-02 08:12:30.680 | debug | Objects client ready ... initialize now sainlogic.0 | 2023-02-02 08:12:30.614 | debug | Redis Objects: Use Redis connection: 127.0.0.1:9001 host.Poseidon | 2023-02-02 08:12:28.659 | info | instance system.adapter.sainlogic.0 started with pid 28139

 

**Versions:** 

 - Adapter version: v0.10.0

 - JS-Controller version: 4.0.24

 - Node version: v19.3.0

 - Operating system: Linux 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l

 

**Additional context** 

Add any other context about the problem here.

phifogg commented 1 year ago

Hm.. wenn nichts geschrieben wird kommt vermutlich über den listener nichts an. Kannst Du mal versuchen die Listener URL im Browser aufzurufen? http://ip:port//weatherstation/data?x=y

Dann müsste im Log eine Meldung auftauchen dass er versucht das Attribut X zu mappen. Kann er nicht, aber damit siehst Du ob der Listener funktioniert.

Pandia22 commented 1 year ago

URL (http://192.168.178.82:45000/weatherstation/data?x=y) im Browser ausgeführt. Adapter gibt eine Warnung aus. Weiter passiert nichts.

sainlogic.0 | 2023-02-02 20:12:19.503 | warn | Listener received illegal request: (GET) /weatherstation/data?x=y -- | -- | -- | --

Mir ist grundsätzlich unklar, wie der Adapter die Verbindung zur Sainlogic-Station aufbaut. Im Lisener-Mode hat er nur die IP-Adresse vom iobroker-Server: 0.0.0.0, den Port: 45000, den Pfad: /weatherstation/data und das Protokoll: Ecowitt. Wird die Station am Protokoll erkannt? Ich verwende auf dem Handy die App von Ecowitt. Gibt es irgendwo Restriktionen, dass die Verbindung nur zu einem Adapter aufgebaut werden kann. Wie gesagt, auf dem anderen Server läuft der Adapter ohne Probleme. Wenn ich diesen stoppe, passiert auf der anderen jedoch auch nichts. Hast du noch eine Idee?

phifogg commented 1 year ago

Der Adapter baut zur Station nur dann eine Verbindung auf wenn der 'Scheduler' verwendet wird. Das geht aber nicht bei allen Stationen. Bei den meisten - und das scheint auch bei Dir der Fall zu sein - läuft der Adapter im Listener Modus. D.h. die Station sendet ihre Infos an den Adapter. Das kannst Du mit der mobile App der Station einstellen. Die Station (also alle die ich bisher gesehen habe) kann aber nur an eine URL schicken. Daher kriegst Du werte nur in einem ioBroker.

Der Adapter hat noch die Funktion die empfangenen Werte an eine andere Adresse weiterzuleiten (Forwarding). Du könntest also den Empfänger-Adapter so einstellen, dass er die Daten direkt so an den zweiten Host weiterleitet.

Pandia22 commented 1 year ago

Hey Daniel, OK. Meine Station liefert nur im Listener Modus Daten an ioBroker. Forwarding wäre eine gute Idee. Wie muss die URL aussehen? Ich habe es mit der Adresse vom Admin des IOB-Salve (https://ipslave:port) probiert. Leider werden keine Daten geschickt. Die Umgehungslösung hat noch einen entscheidenden Fehler. Der IOB-Master empfängt die Daten. Bei Ausfall des Masters wird auf den Slave umgeschaltet. Da der Master offline ist, kann dieser auch das Forwarding durchführen. Hast du noch eine Idee? Kann der Datenstrom von der Station noch über andere Mittel abgezogen werden? MQTT? Home Assistant?

phifogg commented 1 year ago

Grundsätzlich trägst du da die URL zu dem sainlogic Adapter des zweiten Hosts ein. Quasi:

http://:<port des sainlogic adapter, default 45000>/

Es gibt wohl einen Bug derzeit dass Forwarding nicht richtig geht: #143 . Das ist noch auf meiner ToDo Liste...

phifogg commented 1 year ago

Added to release 0.10.1