Einbindung BWT Perla mit WLAN

Begonnen von gotmoon, 24 Juli 2020, 09:50:51

Vorheriges Thema - Nächstes Thema

gotmoon

Hi,
da ich vor kurzem eine neue BWT Perla mit WLAN und App bekommen habe, musste die natürlich in FHEM eingebunden werden. Die App zeigt mir nämlich ganz tolle Daten, die eher nicht so für eine Auswertung zu gebrauchen sind.
Was bei den Modellen ohne WLAN per USB funktioniert, geht hier jedoch nicht. Es fehlt schlicht der USB Anschluss, da das Ding ja WLAN und Netzwerk und GSM hat. Nach einer recht ausführlichen Suche bin ich in einem Nachbar-Forum (ich glaube io-Broker) auf den richtigen Tipp gestoßen, dass es wohl ein JSON-Output gibt. Nach etwas hin und her testen habe ich es dann tatsächlich mit HttpMod hin bekommen.

Folgendes wird benötigt: Die IP-Adresse des Gerätes und das Passwort, welches man bei Registrierung per Mail erhält.

define BWT HTTPMOD https://[IP-Adresse]/home/actualizedata 300
attr BWT userattr sid01Data sid01URL
attr BWT enableCookies 1
attr BWT extractAllJSON 1
attr BWT icon measure_water_meter
attr BWT reAuthRegex Login
attr BWT sid01Data STLoginPWField=[Registrierungspasswort]
attr BWT sid01URL https://[IP-Adresse]/users/login
attr BWT stateFormat {sprintf("Heute: %.d Liter - Monat: %.d m³ - Salz-Status: %.d %", ReadingsVal($name,"durchflussHeute",0), ReadingsVal($name,"durchflussMonat",0)/1000, ReadingsVal($name,"RegeneriemittelVerbleibend",0))}



Damit bekommt man die Folgenden Werte als Readings in das Device

RegeneriemittelNachfuellenIn
RegeneriemittelVerbleibend
aktuellerDurchfluss
aktuellerDurchflussProzent
durchflussHeute
durchflussJahr
durchflussMonat

Um nun eine Auswertung zu machen, die mir anzeigt, wie viel Wasser über den Tag verteilt verbraucht wurde, habe ich das über ein paar Dummy-Werte, ein Notify, ein AT und einem gemeinsamen Filelog gelöst.

define BWT_Day_Dummy dummy
define BWT_Diff_Dummy dummy
define BWT_Set_Null at *23:59:59 set BWT_Day_Dummy 0

define BWT_Value notify BWT:durchflussHeute.* {\
my $day=(ReadingsVal("BWT","durchflussHeute",0));;;;\
my $diff=(ReadingsVal("BWT","durchflussHeute",0)-ReadingsVal("BWT_Day_Dummy","state",0));;;;\
if($diff < 0) {my $diff=0};;;;\
fhem("set BWT_Diff_Dummy $diff");;;;\
fhem("set BWT_Day_Dummy $day");;;;\
}

define Logfile_BwT FileLog ./log/fhem_bwt-%Y-%m.log BWT
define Logfile_BwT_Dummy FileLog ./log/fhem_bwt-%Y-%m.log BWT_Diff_Dummy


Das SVG sieht dann so bei mir aus... wird aber bestimmt die Tage noch etwas erweitert.

define SVG_Logfile_BwT_Dummy_1 SVG Logfile_BwT_Dummy:SVG_Logfile_BwT_Dummy_1:CURRENT

# Created by FHEM/98_SVG.pm, 2020-07-22 17:17:38
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Wasserverbrauch BWT'
set ytics
set y2tics
set grid
set ylabel "Liter"
set y2label "Liter"

#Logfile_BwT_Dummy 3:BWT_Diff_Dummy.*:0:

plot "<IN>" using 1:2 axes x1y2 title 'Wasserverbrauch (Liter)' ls l0 lw 2 with histeps



Sollte jemand noch herausfinden, wie man den Urlaubsmodus (=Wasser Abschalten) einstellt (ohne vorzutäuschen, dass der Wassersensor aktiviert wurde) der kann sich gern beteiligen.
Ebenso würde mich interessieren, wenn einer der Wassersensoren auslöst, damit ich mich unabhängig von der BWT Cloud benachrichtigen lassen kann.

herbert19

Hi,
fange gerade auch an die BWT-Anlage einzubinden, dabei ist mir aufgefallen,
dass im Code:
define BWT_Value notify BWT:durchflussHeute.* {\
my $day=(ReadingsVal("BWT","durchflussHeute",0));;;;\
my $diff=(ReadingsVal("BWT","durchflussHeute",0)-ReadingsVal("BWT_Day_Dummy","state",0));;;;\
if($diff < 0) {my $diff=0};;;;\
fhem("set BWT_Diff_Dummy $diff");;;;\
fhem("set BWT_Day_Dummy $day");;;;\

die Zeichen \ am Zeilenende zuviel sind, da kommt sonst Syntaxfehler.

herbert19

Die Werte kommen an:
Heute: 91 Liter - Monat: 1 m³ - Salz-Status: 50 %

Gibt es auch eine Möglichkeit, den Status der Anzeige (blau, gelb, rot) auszulesen,
damit man sich eine email-Nachricht schicken kann, wenn die Anzeige wechselt,
möglichst mit Ursache (z.B. Aqawatch, Regeneriermittel, ...)

gotmoon

Hi,
Syntax: Keine Ahnung :-)  Bei mir funktioniert es so wie abgebildet. Aber ich habe mir das auch eher mit "Try & Error" zusammengefummelt.
Was mir aber aufgefallen ist: Manchmal scheint die Abfrage aber zu haken. Dann gibts ein paar Tage keine Werte und dann plötzlich wieder. Ich konnte dem aber auch noch nicht auf den Grund gehen.

Bzgl. deiner Statusanzeigen: Im Grunde kannst du doch einfach den %-Wert des Salzes auslesen und Dir bei 20% einfach eine Meldung per Telegram oder per Mail schicken lassen.

miche

Hallo,

ich habe jetzt auch eine Aqua Perla, jedoch funktioniert dies bei mir nicht!
Ich bekomme im Log immer
BWT: no parsed JSON structure available

Funktioniert das bei euch noch oder hat BWT was daran geändert?

Gruß und Danke

gotmoon

Hi
Ja noch funktioniert es. Wenn ich drüber nachdenke, dann tatsächlich schon ziemlich lange.
Aber ich glaube ich hatte damals hin und wieder mal ein paar Probleme mit Cookies. Ein paar mal gingen die Probleme auch von alleine weg.
Ich bin mir aber auch nicht ganz sicher.
Am besten ein wenig damit rum spielen. Neu einloggen lassen. Cookies neu setzen.
Du bekommst das bestimmt hin ;-)

Gruß

miche

Mir scheint es so, als kommt keine Antwort vom request.
Vielleicht funktioniert ja der Login nicht.
Aber wie ich das alles rausfinde, keine Ahnung

l-j-silver

Guten morgen,

scheinbar geht das Auslesen der Daten in dieser Form nicht mehr. Ich habe aber herausgefunden, dass BWT eine API anbietet.
Ihr müsst euch dazu hier mit euren BWT Login anmelden und einen API-Key erstellen.

Danach könnt ihr die BTW wie folgt einbinden:


define BWT HTTPMOD https://bwt-real-smarthome-backend.azurewebsites.net/api/Perla/XXXX-XXXX
attr BWT extractAllJSON 1
attr BWT requestHeader1 Content-Type: application/json
attr BWT requestHeader2 Accept: */*
attr BWT requestHeader3 ApiKey: yyyy


XXXX-XXXX = Produkt-Code
yyyy = API-Key

Folgende Readings erhaltet ihr damit:

deviceState NotSet
displayName BWT Perla home
firmwareVersion 2.001
isHolidayModeActive 0
lastTimeDataReceived 2022-03-15T07:13:12.5+00:00
productCode XXXX-XXXX
refillResourceInDays 95
remainingAmountOfResourcePercent 70
stateBody Ihre Perlwasseranlage läuft einwandfrei.
stateTitle Alles OK!
waterTreatedTotal 37


Ich werde schauen, ob ich es die Tage noch etwas verbessern kann.

Grüße Toni

rspecht

#8
So, jetzt hat es mich auch getroffen. Die API ist ja leider ein Witz. Schön wäre es wieder direkt an die Daten zu kommen. Bei mir sind die Daten auch nicht konsistent.
https://bwt-real-smarthome-backend.azurewebsites.net/api/Perla/xxx/waterconsumption?since=2022-08-01T00%3A00%3A00%2B00%3A00
gibt mir 3491,25 statt die im Display stehenden 2323l für den Monat.

Ebenso mit ...since=2022-08-12T00%3A00%3A00%2B00%3A00 für den Tag - das gibt 0 zurück und es waren da 73l

Beim Jahr (ab 1.1.) sinds 45053l und im Display sinds 37m^3

Also irgendwie nicht zufriedenstellend. Ich hab mal meinen "Draht" zu BWT Glühen lassen - mal sehen was raus kommt.
Ich bin zumindest schonmal auf Ebene "Teamleiter Backline" rausgekommen. Mal sehen obs in die Technik vordringt.

Was mir auch noch fehlt ist der aktuelle Verbrauch in l/min. Meine Visu ist sonst so leer :)

Tante Edit:
hat evtl. jemand eine Idee wie man auf die Box kommt? SSH ist ja "leider" OpenSSH 7.5 Protokoll 2 - das ist recht dicht wenn man nicht grade Hinweise aufs Passwort findet. Sobald man mal "drauf" ist sieht man sicher Möglichkeiten.