69_SoftliqCloud - Auslesen und Steuern von Grünbeck Entkalkern (Cloud)

Begonnen von KernSani, 28 März 2021, 01:04:59

Vorheriges Thema - Nächstes Thema

KernSani

Das Modul aus diesem Post ist jetzt ins SVN eingecheckt und über das reguläre Update verfügbar. Fragen, Anregungen etc... bitte in diesem Thread.

Was kann das Ding?   
Es liest defaultmäßig jede Stunde - steuerbar über Attribut - eine Unmenge von Werten des Entkalkers aus. Die Daten umfassen:
* Stammdaten zum Gerät (Geräte ID, Name, usw...)
* Aktuelle Daten, die man in der App auf der Startseite sieht (Verbrauch der letzten 3 Tage usw...)
* Alle Einstellungen
* Werte, die gestreamt werden, Regenerierungsstatus, aktueller Durchfluss und eine ganze Menge mehr, auch einige die ich in der App noch nicht gefunden habe.
Zudem kann man
* Parameter (Einstellungen) des Entkalkers ändern (ich habe das noch nicht vollständig getestet, aber es geht mindestens das, was in der App auch geht)
* Manuelle Regenerierung anstossen (Achtung - das geht ohne Warnung direkt los)

Was kann/hat das Ding noch nicht?
* Die Readings sind sehr unübersichtlich und bei vielen weiß ich garnicht was sie bedeuten. Da bin ich auf Input angewiesen, mir schwebt vor, dass die Readings 1. in Gruppen (basic, advanced, expert oder so) eingeteilt werden, über ein Attribut wäre dann auswählbar, welche Gruppen man sehen will und 2. sprechendere Namen für die Readings zu finden.

Wie funktioniert es?
Die folgenden Libraries müssen vorhanden sein:
MIME::Base64::URLSafe
Digest::SHA
JSON::XSEine Perl JSON library
Protocol::WebSocket::Client

dann
define <name> SoftliqCloud <loginName>

Danach ist das Passwort mit
set <name> password <password>
zu setzen,

Damit sollte das Ding loslaufen...

Get Befehle:
* authenticate: Braucht man im Normalfall nicht, beim Testen hatte ich allerdings Fälle, wo ich mich neu authorisieren musste
* query: holt alle Daten
* realtime: triggert das "streaming" (entspricht mehr oder weniger dem refresh Button in der App)
* salt/water: zeigt die Salz-/Wasser-Verbrauchshistorie an (vergleichbar mit einem Click auf die 3-Tages-Werte in der App).
* paramList: Zeigt die Einstellungen "schön" an

Set Befehle:
* regenerate: manuelle Regeneration (ohne Nachfrage - geht direkt los)
* param: erlaubt das setzen von Einstellungen (siehe paramList) in der Form
set meineSoftliq <parameterName> <parameterWert>
* refill: Auszuführen wenn Salz nachgefüllt wurde. Dadurch wird das Reading lastRefill mit dem aktuellen Wert des readings msaltusage gefüllt und regelmäßig der Salzverbrauch seit dem letzten Auffülen in saltUsageSinceRefill getrackt.
* password: Einmalig auszuführen, um das Passwort im sicheren Speicher zu setzen.

Wie gesagt, Feedback, Anregungen usw... sind sehr willkommen!
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Matscher

Hallo KernSani,


danke für das Modul. Funktioniert soweit, was aber jetzt neu im Log erscheint:'

Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Connection count rea...") at ./FHEM/69_SoftliqCloud.pm line 1498


Ich nehme an das jetzt auch die Verbindungsanzahl pro Account limitiert wurde? Konntest Du das auch schon feststellen? Info: Ich nutze bzw. habe die APP auf meinem Handy. Nutze sie aber nicht stündlich. :)


Danke und Gruß,
Steve
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

KernSani

Ja, habe ich bei mir auch festgestellt und bei mir lokal die Logausgabe angepasst, um ein paar mehr details zu bekommen. Wollte ich mir heite Abend genauer ansehen :-)

Edit: Tatsächlich kommt nicht mehr zurück als 'Connection count reaches limit.'. Mist... Dann müssen wir vermutlich experimentieren...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

@Matscher: Tritt das Problem bei dir noch auf? Bei mir nicht... Google-Recherche hat auch ergeben, dass Abfrage alle 10 Minuten unkritisch sein sollte. Ich vermute gerade fast, dass das ein Problem auf Grünbeck-Seite war...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Obi-Wan

Hallo Oli,

vielen Dank fürs kümmern. Die Logeinträge sind tatsächlich viel weniger geworden. Zur Zeit habe ich nur noch wenige allerdings täglich (in unregelmäßigen Abständen) erscheinende Fehlermeldungen zur Zeile 1498:
2021.04.06 02:03:46 1: [SophieSalz] - Received invalid JSON: garbage after JSON object, at character offset 417 (before "{"type":6}\x{1e}") at ./FHEM/69_SoftliqCloud.pm line 1498.
Könntest Du dem bitte auch nochmal nachgehen?
Danke,
Obi-Wan

Obi-Wan

Hier noch 2 aktuelle Beispiele:
2021.04.06 04:23:17 1: [SophieSalz] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html PUBLI...") at ./FHEM/69_SoftliqCloud.pm line 1498.
2021.04.06 13:23:20 1: [SophieSalz] - Received invalid JSON: garbage after JSON object, at character offset 10 (before "{"type":1,"target":"...") at ./FHEM/69_SoftliqCloud.pm line 1498.

KernSani

Hi zusammen,
Nach zwei Tagen hatte ich den Fehler heute Nachmittag endlich auch wieder auf meinem Testsystem und konnte den "garbage" isolieren, (wobei Obi-Wan ihn ja schon im Log hatte, ich hatte immer nur die "..."-Variante ). Fix ist im SVN und sollte morgen mit dem Update verfügbar sein. Dann ist Sophie hoffentlich wieder glücklich ;-)
Den "<!DOCTYPE html PUBLI..." hatte ich allerdings noch nicht. Der kommt mir noch verdächtig vor. Das würde heißen es kam eine HTML-Seite zurück, wo JSON erwartet wurde... Da bräuchte ich mehr Details - die erweiterte Log-Ausgabe im Fehlerfall ist ebenfalls im Update enthalten, also falls es nochmal auftritt finden wir den Kollegen auch... 
Grüße,
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Obi-Wan

Neue Version ist eingespielt. Ich werde berichten ob Sophie nun glücklich ist  :)

Obi-Wan

hier doch noch mehr "garbage"...

2021.04.07 21:57:55 1: [SophieSalz] - Received invalid JSON: garbage after JSON object, at character offset 416 (before "{"type":1,"target":"...") at ./FHEM/69_SoftliqCloud.pm line 1503.
'{"type":1,"target":"SendMessageToDevice","arguments":[{"id":"BSxyz","type":"Current","ibuiltindev":true,"isncu":"202006251438","mregpercent1":77,"mregpercent2":0,"mremregstep":0,"mregstatus":0,"mresidcap1":45,"mresidcap2":139,"mrescapa1":0.262,"mrescapa2":0.8,"mmaint":286,"mflow1":0,"mflow2":0,"mflowreg1":0,"mflowreg2":0,"mflowblend":0,"mstep1":4950,"mstep2":0,"mcurrent":0,"mreswatadmod":0,"msaltrange":99}]}{"type":1,"target":"SendOneTimeMessageToDevice","arguments":[{"id":"BSxyz","type":"CurrSlow","ibuiltindev":true,"isncu":"202006251438","mcountreg":55,"mcountwater1":28343,"mcountwater2":0,"mcountwatertank":39,"msaltusage":15.65,"mflowexc":0,"mflowexc2reg1":0,"mflowexc1reg2":0,"mlifeadsorb":0,"mhardsoftw":5,"mcapacity":10.1,"maverage":99,"mstddev":0,"mmax":1,"mpress":0,"mtemp":0,"mflowmax":2.15,"mflowmax1reg2":0,"mflowmax2reg1":0,"mendreg1":"02:21","mendreg2":"00:00"}]}'

2021.04.08 01:18:17 1: [SophieSalz] - Received invalid JSON: garbage after JSON object, at character offset 416 (before "{"type":6}\x{1e}") at ./FHEM/69_SoftliqCloud.pm line 1503.
'{"type":1,"target":"SendMessageToDevice","arguments":[{"id":"BSxyz","type":"Current","ibuiltindev":true,"isncu":"202006251438","mregpercent1":77,"mregpercent2":0,"mremregstep":0,"mregstatus":0,"mresidcap1":42,"mresidcap2":139,"mrescapa1":0.243,"mrescapa2":0.8,"mmaint":285,"mflow1":0,"mflow2":0,"mflowreg1":0,"mflowreg2":0,"mflowblend":0,"mstep1":4950,"mstep2":0,"mcurrent":0,"mreswatadmod":0,"msaltrange":99}]}{"type":6}'

2021.04.08 06:18:23 1: [SophieSalz] - Received invalid JSON: garbage after JSON object, at character offset 10 (before "{"type":1,"target":"...") at ./FHEM/69_SoftliqCloud.pm line 1503.
'{"type":6}{"type":1,"target":"SendMessageToDevice","arguments":[{"id":"BSxyz","type":"Current","ibuiltindev":true,"isncu":"202006251438","mregpercent1":57,"mregpercent2":0,"mremregstep":0,"mregstatus":0,"mresidcap1":100,"mresidcap2":140,"mrescapa1":0.5700000000000001,"mrescapa2":0.8,"mmaint":285,"mflow1":0,"mflow2":0,"mflowreg1":0,"mflowreg2":0,"mflowblend":0,"mstep1":4950,"mstep2":0,"mcurrent":0,"mreswatadmod":0,"msaltrange":99}]}'


der <!DOCTYPE - Fehler ist bislang nicht mehr aufgetreten....

FlorianSenne

Hallo zusammen,

ich habe mich heut auch mal radgewagt und bekomme auch die selbe / ähnliche Fehlermeldung:

2021.04.08 18:47:13 1: [Wasserenthaertung] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "You do not have perm...") at ./FHEM/69_SoftliqCloud.pm line 1447.

2021.04.08 18:47:13 1: [Wasserenthaertung] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/69_SoftliqCloud.pm line 1447.


Bin auf die Lösung gespannt :)
VG
Florian

KernSani

@Obi-Wan: Du bist ja ein eifriger Müllsammler ;-) Ich glaube ich muss das anders lösen, nicht bestimmte "garbage"-Zeichen filtern, sondern hinten alles abschneiden, was da an Unfug kommt...
@Florian: "You do not have perm..." scheint mir eher ein Berechtigungsproblem zu sein... sind das die einzigen Meldungen von [Wasserenthaertung] im Log?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

FlorianSenne

#11
[quote
@Florian: "You do not have perm..." scheint mir eher ein Berechtigungsproblem zu sein... sind das die einzigen Meldungen von [Wasserenthaertung] im Log?
[/quote]

Jap und die kommen immer wieder nacheinander......wobei mein Benutzer und Passwort definitiv stimmen......wobei das Passwort ja nur als "crypt:................" angezeigt wird in der def

Grad sah es so aus:

2021.04.08 20:09:01 1: [Wasserenthaertung] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "You do not have perm...") at ./FHEM/69_SoftliqCloud.pm line 1447.

2021.04.08 20:09:01 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/69_SoftliqCloud.pm line 1287.
2021.04.08 20:09:01 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/69_SoftliqCloud.pm line 1296.
2021.04.08 20:09:01 1: [Wasserenthaertung] - Received invalid JSON: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/69_SoftliqCloud.pm line 1447.


VG
Florian

KernSani

Zitat von: FlorianSenne am 08 April 2021, 19:58:41
Jap und die kommen immer wieder nacheinander......wobei mein Benutzer und Passwort definitiv stimmen......wobei das Passwort ja nur als "crypt:................" angezeigt wird in der def

Grad sah es so aus:
Kannst du bitte mal ein "Get authenticate" machen und danach ein "get query". Wenn dabei immernoch Fehler auftreten, bitte mal verbose im Modul auf 5 stellen und nochmal "get query". Die Logausgabe sollte mir dann mehr Details geben...
Tritt das Problem nur sporadisch auf, oder bekommst du nie Werte zurück?

Grüße,
Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

Die Version, die mit dem morgigen Update kommt hat dann ein leicht verbessertes Verhalten im Fehlerfall...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

FlorianSenne

#14
Zitat von: KernSani am 08 April 2021, 21:49:48
Kannst du bitte mal ein "Get authenticate" machen und danach ein "get query". Wenn dabei immernoch Fehler auftreten, bitte mal verbose im Modul auf 5 stellen und nochmal "get query". Die Logausgabe sollte mir dann mehr Details geben...
Tritt das Problem nur sporadisch auf, oder bekommst du nie Werte zurück?

Grüße,
Oli

Guten Morgen,

ich habe den Fehler gefunden. Ich Hirsch hab das einfachste übersehen. Die .pm hat sich mit dem normalen update nicht aktualisiert....wieso auch immer. ich hab die Datei dann via FTP gelöscht, dann lief das update sauber und nun hab ich die aktuelle Fassung. Geht alles. Danke nochmal und sorry für die Umstände ;)
VG
Flo