[Modul] Pontos Base und Syr tech Wassermanagement

Hallo zusammen,

mein zweites kleines Modul ist im Store verfügbar. Mit diesem Modu kann man die Pontos Base von Hansgrohe bzw vom Hersteller Syr abfragen und zum Teil auch steuern.

Was ist das?
Die Wassermanagmentsysteme werden in die Wasserzuleitung (möglichst direkt nach dem Absperrhahn) eingebaut und prüfen fortan den Wasserdurchsatz, Temperatur, Härtegrad und das wichtigste, es misst und stellt potentielle Leckage fest. Dazu wird das Gerät in einen Lernmodus versetzt und im Anschluss meldet es sich, wenn aussreißer festgestellt wurden.

Das Modul hängt sich ans Modul und holt sich die Werte, zudem kann man Profile umschalten (wenn man bspw bewusst viel Wasser als normal benötigt) oder das integrierte Ventil schließen, sodass kein Wasser mehr (ab)laufen kann.

Voraussetzungen
Symcon ab Version 6.0 und eine PontosBase von hansgrohe oder eine vom Hersteller Syrtech

**Installation
im Modul-Store oder über das Modul-Control

Einrichten der Instanzen in IP-Symcon
Instanz hinzufügen und als Hersteller entweder „hansgrohe“ oder Gerät „PontosBase“ auswählen

Konfigurationsseite:
IP Adresse: dort wird die IP Adresse der PontosBase oder SYR eingetragen
Modellauswahl: Hier bitte das Korrekte Modell bzw den Hersteller auswählen
Intervall: gibt an, wie oft gepollt werden soll.

Auswahlmenü Standardvariablen: Hier kann man wählen, welche Variablen man sich anzeigen lassen möchte.
Auswahlmenü zusätzliche bzw optionale Variablen: Hier kann man wählen, welche zusätzlichen Variablen man sich anzeigen lassen möchte.

Viele Grüße

Hallo @kris
ich habe dein Modul schon eine Weile am Laufen.
Allerdings kommen gelegentlich Fehlermeldungen und die Abfrage kommt auch ganz zum Erliegen. Die Fehlermeldungen sehen meist so aus:

27.07.2022, 08:15:07 | TimerPool            | PontosBase (HGPB_UpdateData): 
Fatal error: Uncaught Error: Unsupported operand types in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php:450
Stack trace:
#0 C:\ProgramData\Symcon\scripts\__generated.inc.php(6679): PontosBase->UpdateData()
#1 C:\Windows\System32\-(1): HGPB_UpdateData(58763)
#2 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on line 450
Abort Processing during Fatal-Error: Uncaught Error: Unsupported operand types in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php:450
Stack trace:
#0 C:\ProgramData\Symcon\scripts\__generated.inc.php(6679): PontosBase->UpdateData()
#1 C:\Windows\System32\-(1): HGPB_UpdateData(58763)
#2 {main}
  thrown
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 450
27.07.2022, 09:01:26 | TimerPool            | PontosBase (HGPB_UpdateData): Warten auf Skriptresultat fehlgeschlagen. Bitte den Spezialschalter 'ThreadCount' erhöhen, um das Problem zu umgehen!
27.07.2022, 09:45:16 | TimerPool            | PontosBase (HGPB_UpdateData): 
Fatal error: Uncaught Error: Unsupported operand types in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php:450
Stack trace:
#0 C:\ProgramData\Symcon\scripts\__generated.inc.php(6679): PontosBase->UpdateData()
#1 C:\Windows\System32\-(1): HGPB_UpdateData(58763)
#2 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on line 450
Abort Processing during Fatal-Error: Uncaught Error: Unsupported operand types in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php:450
Stack trace:
#0 C:\ProgramData\Symcon\scripts\__generated.inc.php(6679): PontosBase->UpdateData()
#1 C:\Windows\System32\-(1): HGPB_UpdateData(58763)
#2 {main}
  thrown
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 450

ich habe aktuell auch noch einen hängenden Task, den ich wohl nicht so einfach wegbekomme. Neustart IPS bzw. PC?

kannst du da mal schauen, was da die Ursache für ist und ob man das ggf. beheben kann.

Danke

Gruß
Rainer

hier noch ein kurzes Update.

  • IPS Dienst stoppen hat nicht funktioniert - bleibt dann in „wird beendet“ hängen.
  • Windows Neustart war da hilfreicher. @paresy gibt es keine Möglichkeit so einen hängenden Task zu „killen“?

im Log ist mir noch aufgefallen, dass bei jeder Abfrage der PontosBase sechs Einträge kommen. In Fehlerfall nur fünf. „hole alle Daten“ ist dann der letzte Eintrag. „hole Daten für den Schlüssel: CND“ kommt dann viel später.
Ich habe die Einträge zur PontosBase mal aus dem Logfile rausgezogen. Vielleicht kannst du da etwas erkennen.
logfile PontosBase 20220727.txt (24,9 KB)

Wenn du zusätzliche Informationen oder Daten braust, lass es mich wissen.

Gruß
Rainer

HI,

kannst du bitte in einem Broswer deine Wahl folgendes machen:

http://„ip der Pontos“:5333/Pontos-Base/get/all und mir die Ausgabe zukommen lassen?

Viele Grüße

Hi,

@Dr.Niels
verhält sich windows Symcon anders wenn ich ein Array erweiter?
Das Array beginng bei mir in Zeile 449 mit

                        $Data = $this->GetAllData();

und in der angemeckerten Zeile 450 wird das Array um den Wert erweitert:

                        $Data += $this->GetOneData("CND");

Unter Linux hab ich da keine Probleme mit.

VIele Grüße

Theoretisch kann es natürlich mal Detailunterschiede zwischen der PHP-Version für Windows und Linux geben, aber die sollten sich prinzipiell gleich verhalten. Ich vermute eher, dass sich der initiale Wert von $Data unterscheidet. Ist $Data ein Array?

edit: + funktioniert laut Doku mit Arrays, das kannte ich noch gar nicht. Dann solltest du dir mal auf beiden Systemen die Werte von GetAllData und GetOneData anschauen, da ist wahrscheinlich irgendwo ein Unterschied.

Hi,

$Data ist ein Array, ich habe dennoch mal eine neue Beta hochgeladen und das += durch = ersetzt. Nicht das es doch an Windows liegt…

Bei dem Vergleich sind wir dran. Hab per PN die Daten bekommen.

Viele Grüße

Hi,

@erpe
Danke für die Daten, was ergibt ein:

http://"ip der Pontos":5333/Pontos-Base/get/CND

ich habe auch eine Beta hochgeladen, nur um sicherzugehen das Windows mit der Deklaration klarkommt. Vielliecht magst du mal testen?

Viele Grüße

Hi,
da kommt: {„getCND“:„330“} zurück.

ich habe mal alle meine Logs nach Errors vom Modul durchsucht:
Errors PontosBase Module.txt (103,3 KB)

die kommen doch schon recht häufig. Aber auch an den unterschiedlichsten Stellen und mit unterschiedlichen Fehlermeldungen (haben aber wohl meist mit dem Array/Index zu tun).
Kann es sein, dass gelegentlich die Antwort von der PontosBase kein gültiges Array ist, oder irgendwie Unsinn drin steht?

Ich werde die Beta mal testen, damit wir zumindest den Code ausschließen können.
Danke

@Dr.Niels
wie bekomme ich diesen „Hänger“ , den das Modul gelegentlich erzeugt, wieder raus - ohne Neustart von Windows?

edit:
Beta gerade installiert, nun werden Leitfähigkeit und Härtegrad nicht mehr aktualisiert

27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | Erstelle...
27.07.2022 17:39:15 | 22599 | ERROR   | KernelMT             | InstanzManager: Fehler bei Instanz #10649, Meldung VM_UPDATE: 
Parse error: syntax error, unexpected end of file in C:\ProgramData\Symcon\scripts\__generated.inc.php on line 7449

27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | Einstellungen gespeichert
27.07.2022 17:39:15 | 00000 | CUSTOM  | PHP                  | Error: Warning: Variablentyp und Profiltyp stimmen nicht überein
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 263
  137 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
  263 in modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php (call MaintainVariable)
    3 in C:\Windows\System32\- (call ApplyChanges)
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | Aktualisiere Daten
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | prüfe Adminstatus
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: NPS
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | AdminMode ist aktiv
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | hole alle Daten
27.07.2022 17:39:15 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: CND
27.07.2022 17:39:16 | 58763 | ERROR   | InstanceManager      | Kann Schnittstellen-Instanz nicht erstellen: 
Warning: Variablentyp und Profiltyp stimmen nicht überein in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on line 263


Gruß
Rainer

Hi,

so , jetzt habe ich mal ein wenig mehr zeit…

   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 263

also quick and Dirty bekommst Du wen Fehler wie folgt weg:

  1. Instanz aufrufen und den Schalter bei „lösche Alarm“ auf inaktiv setzen
  2. Änderungen übernehmen und Fehler ignorieren.
  3. Instanz schließen und Profilamanager öffnen
  4. Bei den boolean Profilen das Profil „WaterManagement.clrAla“ löschen
  5. Instanz aufrufen und „lösche Alarm“ wieder aktivieren.

Damit ist das erledigt. Das andere muss ich mir nochmal anschauen.

Ich kann mir ehrlich nicht vorstellen warum das den Dienst killen soll. Was ist denn bei dir die Instanz 22599? Das ist der zweite Fehler

27.07.2022 17:39:15 | 22599 | ERROR   | KernelMT             | InstanzManager: Fehler bei Instanz #10649, Meldung VM_UPDATE: 
Parse error: syntax error, unexpected end of file in C:\ProgramData\Symcon\scripts\__generated.inc.php on line 7449

Viele Grüße

HI,

neue Beta ist online. Jetzt werden die Variablen korrekt aktualisiert, mal sehen ob der Fehler

Abort Processing during Fatal-Error: Uncaught Error: Unsupported operand types in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php:450

verschwunden ist.

Viele Grüße

Hi,

die Fehlermeldung mit dem „falschen“ Profil hat sich mit deinen Aktionen nun erledigt.

Instance 22599 ist eine Float (Windrichtung), die alle 3 Sekunden aktualisiert wird. Und 10649 ist die JSLive-Gauge zur Anzeige dieser Variablen. Hat somit nichts damit zu tun. Oder wird beim Update der Module was in die __generated.inc.php geschrieben und die Datei dafür kurz gelockt? Ich bekomme beim Update von Modulen immer mal solche oder ähnliche Meldungen.

Mit der letzten Beta sind erst einmal die Fehlermeldungen vom Modul verschwunden und die Variablen werden alle wieder aktualisiert.

Den hängenden Task werde ich hoffentlich gleich mit dem Neustart nach dem Windows-Update erledigt haben.

Dann werden wir mal sehen, ob alles wieder „rund“ läuft.
Danke erstmal für die schnelle Hilfe.

Und eine Frage hätte ich noch zum „Aktualisierungsdatum“: das kommt schon so als UTC? Kann man da irgendwo einen Offset oder Zeitzone einstellen? Habe in der App auch nichts gefunden.

Danke und Gruß
Rainer

Hi,

ich konnte eben zufällig miterleben, wie sich so ein hängender PHP-Slot auswirkt:


der Hinweis auf das Skript war mittlerweile gelöscht. Jedoch tauchten in anderen Slots nun Abfragen vom Modul auf, die dann auch rot wurden, aber beendet wurden.
Also habe ich versucht die Base mit dem Browser abzufragen - nicht vom IPS-PC. Da habe ich nur Timeouts bekommen. Verbindung mit der App war aber noch möglich. Bisher hatte ich immer die Base neu gestartet (Spannungs- und Batterielos). Da der eine Slot eh blockiert war, habe ich diesmal nur den IPS PC durchgestartet und nach dem Neustart funktioniert nun alles erst einmal wieder.
im Logfile ist das zu finden:

28.07.2022 16:53:06 | 58763 | MESSAGE | PontosBase           | Aktualisiere Daten
28.07.2022 16:53:06 | 58763 | MESSAGE | PontosBase           | prüfe Adminstatus
28.07.2022 16:53:06 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: NPS
28.07.2022 16:53:08 | 58763 | MESSAGE | PontosBase           | AdminMode ist aktiv
28.07.2022 16:53:08 | 58763 | MESSAGE | PontosBase           | hole alle Daten

28.07.2022 17:08:06 | 58763 | ERROR   | TimerPool            | PontosBase (HGPB_UpdateData): Warten auf Skriptresultat fehlgeschlagen. Bitte den Spezialschalter 'ThreadCount' erhöhen, um das Problem zu umgehen!

28.07.2022 17:09:06 | 58763 | MESSAGE | PontosBase           | Aktualisiere Daten
28.07.2022 17:09:06 | 58763 | MESSAGE | PontosBase           | prüfe Adminstatus
28.07.2022 17:09:06 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: NPS
28.07.2022 17:09:27 | 00000 | CUSTOM  | PHP                  | Error: Notice: Trying to access array offset on value of type bool
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 577
  137 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  577 in modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php (call IPSLogger_PhpErrorHandler)
  439 in modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php (call CheckAdminMode)
  6679 in scripts\__generated.inc.php (call UpdateData)
    1 in C:\Windows\System32\- (call HGPB_UpdateData)
28.07.2022 17:09:27 | 58763 | MESSAGE | PontosBase           | AdminMode ist aktiv
28.07.2022 17:09:27 | 58763 | MESSAGE | PontosBase           | hole alle Daten
28.07.2022 17:09:48 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: CND
28.07.2022 17:10:10 | 00000 | CUSTOM  | PHP                  | Error: Warning: array_merge(): Expected parameter 1 to be an array, bool given
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 451
  137 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
  451 in modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php (call array_merge)
  6679 in scripts\__generated.inc.php (call UpdateData)
    1 in C:\Windows\System32\- (call HGPB_UpdateData)
28.07.2022 17:10:10 | 00000 | CUSTOM  | PHP                  | Error: Notice: Trying to access array offset on value of type null
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 453

Das würde zumindest mal die gelegentlichen Fehlermeldungen mit dem Array erklären, wenn keine oder auch korrupte Daten zurück kommen.
Was soll aber die Ursache für das Hängenbleiben sein? Verbindungsprobleme WLAN?
Ich schaue mal, wie gut die Verbindung an der Stelle ist und ob ich da was verbessern kann.

Es scheint ja auch noch nicht so viele Nutzer von der Base hier zu geben und wie bei denen die Erfahrungen damit sind.

Gruß
Rainer

Hi,

gute Frage, meine Pontos ist jetzt auch nicht gerade mit nem „Hotspot“ verbunden (der nächste AP ist ist im EG, inkl zwei Mauern dazwischen) und ich habe keinerlei derartige Meldungen.

Ich werde wohl nicht drumherum kommen, debugausgaben einzubauen und eine Prüfung, ob das erste Array existiert bevor ich es merge…

Mal sehen wann ich das schaffe. Du fragst einmal die minute ab, oder?

Hi,

hab ne schnelle Beta hochgeladen. Dort wird zumindest im Debug für die Funktionen GetAllData und GetOneData die Ausgabe angezeigt. Vielleicht hilft das schon weiter

Viele Grüße

Hi,

das ist schon etwas seltsam.
heute früh hatte ich sogar schon vier Skript-Threads, die gehangen haben.
Da in den Fehlermeldungen auch immer mal auftauchte, dass ich den ThreadCount erhöhen soll, habe ich festgestellt, dass diese bei mir auf 40 stand - der default Wert aber schon 50 ist. Also habe ich das gleich mal korrigiert. Es gibt nun 50 Skript-Threads.
Die Abfrage habe ich auch mal von einer Minute auf 5 Minuten geändert. Kann ich ja ggf. auch wieder zurücknehmen.
habe auch gerade gesehen, dass es eine neue Beta gibt - vielleicht kommen wir damit an die Ursache ran.
Danke erstmal

Gruß
Rainer

Hi,

dein Debug hat schon was gebracht:


das ist natürlich kein Array und kann nicht verarbeitet werden.
nun hängt der Thread

komplettes Debug gibt es als PN.

Gruß
Rainer

Hi,

perfekt, vielen Dank. neue Beta online.
Ich habe erstmal Curl einen Timeout von 5 sek. verpasst, zudem wird auch mitgeteilt, wenn Curl keine Daten bekommt…

Zudem frage ich nun ab, ob das Ergebnis ein Array ist. Mal sehen ob es besser läuft.

Viele Grüße

Hi,

neue Beta läuft mit debug…

im Debug konnte man auch schön sehen, dass die drei Abfragen jeweils dann eine Verzögerung drin hatten und nicht mehr in ein bis zwei Sekunden abgearbeitet wurden.

Ich melde mich wieder, wenn es neue Ergebnisse gibt.

Was ist „getNPS“ für ein Parameter, den du als Erstes abfragst?

Danke
Gruß
Rainer

Hi,

die Richtung stimmt schon mal…

29.07.2022, 15:42:56 |           GetAllData | no response from device: Connection timed out after 5000 milliseconds

hat keinen Fehler erzeugt, aber

29.07.2022, 16:29:30 |           GetOneData | no response from deviceOperation timed out after 5000 milliseconds with 0 bytes received
29.07.2022, 16:32:38 |           GetOneData | no response from deviceConnection timed out after 5000 milliseconds
29.07.2022, 16:32:43 |           GetAllData | no response from device: Connection timed out after 5000 milliseconds
29.07.2022, 16:32:48 |           GetOneData | no response from deviceConnection timed out after 5000 milliseconds

bringen diese Fehler

29.07.2022 16:29:30 | 58763 | ERROR   | PontosBase           | GetOneData(): Error to get data
29.07.2022 16:29:30 | 00000 | CUSTOM  | PHP                  | Error: Notice: Trying to access array offset on value of type bool
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 591
29.07.2022 16:29:30 | 58763 | MESSAGE | PontosBase           | AdminMode ist aktiv
29.07.2022 16:29:30 | 58763 | MESSAGE | PontosBase           | hole alle Daten
29.07.2022 16:29:32 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: CND
29.07.2022 16:29:32 | 58763 | ERROR   | TimerPool            | PontosBase (HGPB_UpdateData): 
Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on line 591
29.07.2022 16:32:38 | 58763 | ERROR   | PontosBase           | GetOneData(): Error to get data
29.07.2022 16:32:38 | 00000 | CUSTOM  | PHP                  | Error: Notice: Trying to access array offset on value of type bool
   Error in Script C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on Line 591
29.07.2022 16:32:43 | 58763 | ERROR   | PontosBase           | GetAllData(): Error to get data
29.07.2022 16:32:43 | 58763 | MESSAGE | PontosBase           | hole Daten für den Schlüssel: CND
29.07.2022 16:32:48 | 58763 | ERROR   | PontosBase           | GetOneData(): Error to get data
29.07.2022 16:32:48 | 58763 | ERROR   | PontosBase           | problems to get data, data is not an array, try again later
29.07.2022 16:32:48 | 58763 | ERROR   | TimerPool            | PontosBase (HGPB_UpdateData): 
Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\.store\net.lorbetzki.watermanagement\PontosBase\module.php on line 591

Ich hoffe, das hilft dir weiter bei der Suche. Die hängenden Threads scheint es schon mal nicht mehr zu erzeugen.

Gruß