FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ch.eick am 15 Juni 2020, 19:50:38

Titel: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 15 Juni 2020, 19:50:38
EDIT:
2023.04.28 - Die Salt_Quantity wird jetzt in kg beim set angegeben und zusetzlich auch in kg beim get (https://forum.fhem.de/index.php?msg=1274141)
2022.08.22 - Ein Fehler in den userreadings korrigiert
                    Die gesamt Zähler laufen mit monotonic.
                    Die gesamt Verbrauchswerte werden jetzt in m³, mit drei Nachkommestellen, angezeigt.
2020.10.19 - Aktualisierung der Devices mit den momentanen Namen.
2020.10.16 - Neues stateFormat in Tabellen Form
2020.10.16 - Korrekturen in den readings für ActualAbstractionTime
2020.10.14 - Für die "Name" Definition wird es noch kurzfristig eine Aktualisierung geben
2020.10.14 - stateFormat wurde aktualisiert
2020.10.14 - 37_water_weekly wird im Schedule nun auch abgerufen und direkt danach, bis auf die Summe wieder bereinigt.
2020.10.14 - SaltRange nun auch in Days, wie es original geliefert wird. Die Umrechnung in Wochen bleibt natürlich
2020.10.12 - Es sollte ein komplett neues Device angelegt werden, da auch viele Attribute gelöscht wurden
2020.10.12 - Bei der Abfrage von Statistiken wurde sehr viel erweitert.
                    Es gibt jeweils ein get für Reports und ein get für die laufende Statistik, so dass die _* readings nur noch für die Reports verwendet werden.
                    Auch werden jetzt zusätzlich Summen gebildet.
                    Bei den Events und beim Logging wird nun gefiltert
2020.10.10 - Wasser_Schedule wurde bereit gestellt mit ersten Ideen. Die Werte sollen nun gelegt werden, um Diagramme zu erstellen.
2020.10.10 - Die ersten DbLogInclude wurden definiert. Bitte ins Device schauen.
2020.10.10 - Wasserstop und Regeneration sind nun mit start/stop bzw open/close im set zu wählen
2020.10.10 - Warnhinweis zur Regeneration hinzugefügt. Bitte verwendet die automatische Regeneration!
2020.10.10 - water_daily bildet nun im userreading eine water_daily_Summe
2020.10.10 - Die Statistiken daily, weekly, monthly, yearly haben nun ein MaxAge von einem Tag
2020.10.10 - 38_water_yearly ist nun verfügbar
2020.10.10 - 38_water_monthly funktioniert nun mit readings und dynamischer Tagesanzahl
2020.10.09 - Es gibt nun ein stateformat und für Werte, die gesetzt werden können gibt es Auswahllisten
2020.08.19 - einige Fehler Korrekturen und Erweiterungen
2020.08.19 - zusätzliche Beispiele im 2. Post
2020.08.17 - Update der RAW Definition
2020.06.25 - Update userreadings um den Offset Fehler zu korrigieren
2020.06.25 - Update der regex für 37_water_weekly und 41_water_of_days , weil beide mit "command":"water weekly" im JSON zurueck gemeldet wurden und nicht eindeutig waren

Hallo zusammen,

ich habe mich entschlossen für die Judo isoft Plus Wasserenthärtung einen neuen Thread zu starten. Bei den httpmod Beispielen gab es das zwar bereits hier https://forum.fhem.de/index.php/topic,56455.0.html (https://forum.fhem.de/index.php/topic,56455.0.html), jedoch habe ich ziemlich viele Änderung bei den readings, die ich gerne auch noch zur Diskussion stellen möchte.

Weiterhin ist das WIKI https://wiki.fhem.de/wiki/JUDO_iSoft_Plus (https://wiki.fhem.de/wiki/JUDO_iSoft_Plus) die Voraussetzung.

- Die Abfragegruppen wurden berücksichtigt
- Der Verbrauch wurde in Raw und Soft Wasser aufgeteilt
- Die Tages-, Wochen- und Monatsstatistiken wurden in einzelne readings aufgeteilt
- Beim get werden die readings nicht mehr doppelt belegt und sind somit eindeutig
- Die readings bauen sich nur so auf, wie sie auch gezielt abgerufen werden.
- Die set/get Aufrufe wurden an die API Benennung angepasst, die man vom isoft Plus mit [IP-Adresse]:8000 auflisten kann

- Die abfragbaren Statistiken dienen eher der schnellen Übersich, ohne in die DbLog zu schauen. Zum Loggen in die Datenbank sind sie nicht so gut geeignet
- Für das Aufbereiten von Diagrammen sollte man eher die Täglichen Werte in die Datenbank schreiben, danit der TIMESTAMP passt.

- In den Behälter passen maximal 50 kg Salz. Man füllt kg nach und bekommt den Füllstand dann in % und kg angezeigt.
  Aber Achtung, wenn man nachfüllt wird dies auf den alten Bestand addiert, wer also korrigieren möchte, muss hier dann mehr/weniger angeben,
  oder über das Display den Salzfüllstand zurücksetzen und dann die korrekte Menge wieder eintragen, was dann auch wieder über FHEM geht.

Achtung:
Durch den Eingriff in die Regeneration greift Ihr direkt in die "Verordnung über die Qualität von Wasser für den menschlichen Gebrauch (Trinkwasserverordnung - TrinkwV)" ein.
Die "Automatische Regeneration" sorgt für den richtigen Umgang mit dem Trinkwasser.
Hierbei werden beide "Kammern" nacheinander gespült (ca. 22l landen dann im Abfluss) und anschließend wieder mit Salzwasser gefühlt um die jeweilige gewünscht °dH "mischen" zu können.
Das Stichwort ist hier Stagnationswasser. Bitte verwendet die automatische Regeneration und stoppt diese niemals!


Hier der aktuelle Stand:
defmod JUDO_iSoft HTTPMOD https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=4&token=%token% 0
attr JUDO_iSoft DbLogExclude .*
attr JUDO_iSoft DbLogInclude consumption_WaterCurrent.*,consumption_WaterAverage,consumption_Water.*Summe,consumption_WaterTotal.*,consumption_Salt.*
attr JUDO_iSoft alias JUDO_iSoft
attr JUDO_iSoft authRetries 2
attr JUDO_iSoft comment Version 2022.08.22 08:00\
Web API auf :8000\
https://blog.muwave.de/2017/06/monitoring-and-controlling-a-judo-i-soft-plus-water-softening-device-via-lan/
attr JUDO_iSoft disable 0
attr JUDO_iSoft enableControlSet 0
attr JUDO_iSoft event-on-change-reading consumption_.*,waterstop_.*
attr JUDO_iSoft event-on-update-reading consumption_WaterDaily3Hour-01.*,consumption_report_WaterDaily3Hour-01.*,consumption_report_WaterDailyDate.*,consumption_WaterWeeklyByDay-01.*,consumption_report_WaterWeeklyByDay-01.*,consumption_report_WaterWeeklyDate.*,consumption_WaterMonthlyByDay-01.*,consumption_report_WaterMonthlyByDay-01.*,consumption_report_WaterMonthlyDate.*,consumption_WaterYearByMonth-01.*,consumption_report_WaterYearByMonth-01.*,consumption_report_WaterYearDate.*
attr JUDO_iSoft extractAllJSON 0
attr JUDO_iSoft get22Name Info_SoftwareVersion
attr JUDO_iSoft get22URL https://%JUDO_ipaddress%:8124/?group=version&command=software%20version&msgnumber=1&token=%token%
attr JUDO_iSoft get23Name Info_HardwareVersion
attr JUDO_iSoft get23URL https://%JUDO_ipaddress%:8124/?group=version&command=hardware%20version&msgnumber=1&token=%token%
attr JUDO_iSoft get28Name Info_SerialNumber
attr JUDO_iSoft get28URL https://%JUDO_ipaddress%:8124/?group=spare%20part&command=serial%20number&msgnumber=5&token=%token%
attr JUDO_iSoft get32Name Info_InitDate
attr JUDO_iSoft get32URL https://%JUDO_ipaddress%:8124/?group=contract&command=init%20date&msgnumber=1&token=%token%
attr JUDO_iSoft get33Name Info_ServiceNumber
attr JUDO_iSoft get33URL https://%JUDO_ipaddress%:8124/?group=contract&command=service%20number&msgnumber=1&token=%token%
attr JUDO_iSoft get34Name Info_ServiceDate
attr JUDO_iSoft get34URL https://%JUDO_ipaddress%:8124/?group=contract&command=service%20date&msgnumber=1&token=%token%
attr JUDO_iSoft get35Name Water_Current
attr JUDO_iSoft get35URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20current&msgnumber=1&token=%token%
attr JUDO_iSoft get36-10Name consumption_WaterDaily3Hour-06
attr JUDO_iSoft get36-11Name consumption_WaterDaily3Hour-07
attr JUDO_iSoft get36-12Name consumption_WaterDaily3Hour-08
attr JUDO_iSoft get36-5Name consumption_WaterDaily3Hour-01
attr JUDO_iSoft get36-6Name consumption_WaterDaily3Hour-02
attr JUDO_iSoft get36-7Name consumption_WaterDaily3Hour-03
attr JUDO_iSoft get36-8Name consumption_WaterDaily3Hour-04
attr JUDO_iSoft get36-9Name consumption_WaterDaily3Hour-05
attr JUDO_iSoft get361-10Name consumption_report_WaterDaily3Hour-06
attr JUDO_iSoft get361-11Name consumption_report_WaterDaily3Hour-07
attr JUDO_iSoft get361-12Name consumption_report_WaterDaily3Hour-08
attr JUDO_iSoft get361-5Name consumption_report_WaterDaily3Hour-01
attr JUDO_iSoft get361-6Name consumption_report_WaterDaily3Hour-02
attr JUDO_iSoft get361-7Name consumption_report_WaterDaily3Hour-03
attr JUDO_iSoft get361-8Name consumption_report_WaterDaily3Hour-04
attr JUDO_iSoft get361-9Name consumption_report_WaterDaily3Hour-05
attr JUDO_iSoft get361DeleteIfUnmatched 1
attr JUDO_iSoft get361MaxAge 86400
attr JUDO_iSoft get361Name Report_Water_Daily
attr JUDO_iSoft get361RegOpt g
attr JUDO_iSoft get361Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get361URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr JUDO_iSoft get36DeleteIfUnmatched 1
attr JUDO_iSoft get36Name Water_Daily
attr JUDO_iSoft get36RegOpt g
attr JUDO_iSoft get36Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get36URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%
attr JUDO_iSoft get37-10Name consumption_WaterWeeklyByDay-06
attr JUDO_iSoft get37-11Name consumption_WaterWeeklyByDay-07
attr JUDO_iSoft get37-5Name consumption_WaterWeeklyByDay-01
attr JUDO_iSoft get37-6Name consumption_WaterWeeklyByDay-02
attr JUDO_iSoft get37-7Name consumption_WaterWeeklyByDay-03
attr JUDO_iSoft get37-8Name consumption_WaterWeeklyByDay-04
attr JUDO_iSoft get37-9Name consumption_WaterWeeklyByDay-05
attr JUDO_iSoft get371-10Name consumption_report_WaterWeeklyByDay-06
attr JUDO_iSoft get371-11Name consumption_report_WaterWeeklyByDay-07
attr JUDO_iSoft get371-5Name consumption_report_WaterWeeklyByDay-01
attr JUDO_iSoft get371-6Name consumption_report_WaterWeeklyByDay-02
attr JUDO_iSoft get371-7Name consumption_report_WaterWeeklyByDay-03
attr JUDO_iSoft get371-8Name consumption_report_WaterWeeklyByDay-04
attr JUDO_iSoft get371-9Name consumption_report_WaterWeeklyByDay-05
attr JUDO_iSoft get371AutoNumLen 2
attr JUDO_iSoft get371MaxAge 86400
attr JUDO_iSoft get371Name Report_Water_Weekly
attr JUDO_iSoft get371RegOpt g
attr JUDO_iSoft get371Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get371URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr JUDO_iSoft get37AutoNumLen 2
attr JUDO_iSoft get37Name Water_Weekly
attr JUDO_iSoft get37RegOpt g
attr JUDO_iSoft get37Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get37URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%
attr JUDO_iSoft get38-10Name consumption_WaterMonthlyByDay-06
attr JUDO_iSoft get38-11Name consumption_WaterMonthlyByDay-07
attr JUDO_iSoft get38-12Name consumption_WaterMonthlyByDay-08
attr JUDO_iSoft get38-13Name consumption_WaterMonthlyByDay-09
attr JUDO_iSoft get38-14Name consumption_WaterMonthlyByDay-10
attr JUDO_iSoft get38-15Name consumption_WaterMonthlyByDay-11
attr JUDO_iSoft get38-16Name consumption_WaterMonthlyByDay-12
attr JUDO_iSoft get38-17Name consumption_WaterMonthlyByDay-13
attr JUDO_iSoft get38-18Name consumption_WaterMonthlyByDay-14
attr JUDO_iSoft get38-19Name consumption_WaterMonthlyByDay-15
attr JUDO_iSoft get38-20Name consumption_WaterMonthlyByDay-16
attr JUDO_iSoft get38-21Name consumption_WaterMonthlyByDay-17
attr JUDO_iSoft get38-22Name consumption_WaterMonthlyByDay-18
attr JUDO_iSoft get38-23Name consumption_WaterMonthlyByDay-19
attr JUDO_iSoft get38-24Name consumption_WaterMonthlyByDay-20
attr JUDO_iSoft get38-25Name consumption_WaterMonthlyByDay-21
attr JUDO_iSoft get38-26Name consumption_WaterMonthlyByDay-22
attr JUDO_iSoft get38-27Name consumption_WaterMonthlyByDay-23
attr JUDO_iSoft get38-28Name consumption_WaterMonthlyByDay-24
attr JUDO_iSoft get38-29Name consumption_WaterMonthlyByDay-25
attr JUDO_iSoft get38-30Name consumption_WaterMonthlyByDay-26
attr JUDO_iSoft get38-31Name consumption_WaterMonthlyByDay-27
attr JUDO_iSoft get38-32Name consumption_WaterMonthlyByDay-28
attr JUDO_iSoft get38-33Name consumption_WaterMonthlyByDay-29
attr JUDO_iSoft get38-34Name consumption_WaterMonthlyByDay-30
attr JUDO_iSoft get38-35Name consumption_WaterMonthlyByDay-31
attr JUDO_iSoft get38-5Name consumption_WaterMonthlyByDay-01
attr JUDO_iSoft get38-6Name consumption_WaterMonthlyByDay-02
attr JUDO_iSoft get38-7Name consumption_WaterMonthlyByDay-03
attr JUDO_iSoft get38-8Name consumption_WaterMonthlyByDay-04
attr JUDO_iSoft get38-9Name consumption_WaterMonthlyByDay-05
attr JUDO_iSoft get381-10Name consumption_report_WaterMonthlyByDay-06
attr JUDO_iSoft get381-11Name consumption_report_WaterMonthlyByDay-07
attr JUDO_iSoft get381-12Name consumption_report_WaterMonthlyByDay-08
attr JUDO_iSoft get381-13Name consumption_report_WaterMonthlyByDay-09
attr JUDO_iSoft get381-14Name consumption_report_WaterMonthlyByDay-10
attr JUDO_iSoft get381-15Name consumption_report_WaterMonthlyByDay-11
attr JUDO_iSoft get381-16Name consumption_report_WaterMonthlyByDay-12
attr JUDO_iSoft get381-17Name consumption_report_WaterMonthlyByDay-13
attr JUDO_iSoft get381-18Name consumption_report_WaterMonthlyByDay-14
attr JUDO_iSoft get381-19Name consumption_report_WaterMonthlyByDay-15
attr JUDO_iSoft get381-20Name consumption_report_WaterMonthlyByDay-16
attr JUDO_iSoft get381-21Name consumption_report_WaterMonthlyByDay-17
attr JUDO_iSoft get381-22Name consumption_report_WaterMonthlyByDay-18
attr JUDO_iSoft get381-23Name consumption_report_WaterMonthlyByDay-19
attr JUDO_iSoft get381-24Name consumption_report_WaterMonthlyByDay-20
attr JUDO_iSoft get381-25Name consumption_report_WaterMonthlyByDay-21
attr JUDO_iSoft get381-26Name consumption_report_WaterMonthlyByDay-22
attr JUDO_iSoft get381-27Name consumption_report_WaterMonthlyByDay-23
attr JUDO_iSoft get381-28Name consumption_report_WaterMonthlyByDay-24
attr JUDO_iSoft get381-29Name consumption_report_WaterMonthlyByDay-25
attr JUDO_iSoft get381-30Name consumption_report_WaterMonthlyByDay-26
attr JUDO_iSoft get381-31Name consumption_report_WaterMonthlyByDay-27
attr JUDO_iSoft get381-32Name consumption_report_WaterMonthlyByDay-28
attr JUDO_iSoft get381-33Name consumption_report_WaterMonthlyByDay-29
attr JUDO_iSoft get381-34Name consumption_report_WaterMonthlyByDay-30
attr JUDO_iSoft get381-35Name consumption_report_WaterMonthlyByDay-31
attr JUDO_iSoft get381-5Name consumption_report_WaterMonthlyByDay-01
attr JUDO_iSoft get381-6Name consumption_report_WaterMonthlyByDay-02
attr JUDO_iSoft get381-7Name consumption_report_WaterMonthlyByDay-03
attr JUDO_iSoft get381-8Name consumption_report_WaterMonthlyByDay-04
attr JUDO_iSoft get381-9Name consumption_report_WaterMonthlyByDay-05
attr JUDO_iSoft get381DeleteIfUnmatched 1
attr JUDO_iSoft get381MaxAge 86400
attr JUDO_iSoft get381Name Report_Water_Monthly
attr JUDO_iSoft get381RegOpt g
attr JUDO_iSoft get381Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get381URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%
attr JUDO_iSoft get38DeleteIfUnmatched 1
attr JUDO_iSoft get38Name Water_Monthly
attr JUDO_iSoft get38RegOpt g
attr JUDO_iSoft get38Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%
attr JUDO_iSoft get39-10Name consumption_WaterYearByMonth-06
attr JUDO_iSoft get39-11Name consumption_WaterYearByMonth-07
attr JUDO_iSoft get39-12Name consumption_WaterYearByMonth-08
attr JUDO_iSoft get39-13Name consumption_WaterYearByMonth-09
attr JUDO_iSoft get39-14Name consumption_WaterYearByMonth-10
attr JUDO_iSoft get39-15Name consumption_WaterYearByMonth-11
attr JUDO_iSoft get39-16Name consumption_WaterYearByMonth-12
attr JUDO_iSoft get39-5Name consumption_WaterYearByMonth-01
attr JUDO_iSoft get39-6Name consumption_WaterYearByMonth-02
attr JUDO_iSoft get39-7Name consumption_WaterYearByMonth-03
attr JUDO_iSoft get39-8Name consumption_WaterYearByMonth-04
attr JUDO_iSoft get39-9Name consumption_WaterYearByMonth-05
attr JUDO_iSoft get391-10Name consumption_report_WaterYearByMonth-06
attr JUDO_iSoft get391-11Name consumption_report_WaterYearByMonth-07
attr JUDO_iSoft get391-12Name consumption_report_WaterYearByMonth-08
attr JUDO_iSoft get391-13Name consumption_report_WaterYearByMonth-09
attr JUDO_iSoft get391-14Name consumption_report_WaterYearByMonth-10
attr JUDO_iSoft get391-15Name consumption_report_WaterYearByMonth-11
attr JUDO_iSoft get391-16Name consumption_report_WaterYearByMonth-12
attr JUDO_iSoft get391-5Name consumption_report_WaterYearByMonth-01
attr JUDO_iSoft get391-6Name consumption_report_WaterYearByMonth-02
attr JUDO_iSoft get391-7Name consumption_report_WaterYearByMonth-03
attr JUDO_iSoft get391-8Name consumption_report_WaterYearByMonth-04
attr JUDO_iSoft get391-9Name consumption_report_WaterYearByMonth-05
attr JUDO_iSoft get391AutoNumLen 2
attr JUDO_iSoft get391MaxAge 86400
attr JUDO_iSoft get391Name Report_Water_Yearly
attr JUDO_iSoft get391RegOpt g
attr JUDO_iSoft get391Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get391URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%&year=%_YEAR%
attr JUDO_iSoft get39AutoNumLen 2
attr JUDO_iSoft get39Name Water_Yearly
attr JUDO_iSoft get39RegOpt g
attr JUDO_iSoft get39Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get39URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%
attr JUDO_iSoft get40Name Water_Total
attr JUDO_iSoft get40URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20total&msgnumber=1&token=%token%
attr JUDO_iSoft get41Name Report_WaterOfDays
attr JUDO_iSoft get41URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%&offset=%_OFFSET%
attr JUDO_iSoft get42Name Water_Average
attr JUDO_iSoft get42URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20average&msgnumber=1&token=%token%
attr JUDO_iSoft get43Name Water_Actual_Abstraction_Time
attr JUDO_iSoft get43URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%
attr JUDO_iSoft get44Name Waterstop_Actual_Quantity
attr JUDO_iSoft get44URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get45Name Salt_Quantity
attr JUDO_iSoft get45URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get47Name Salt_Range
attr JUDO_iSoft get47URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20range&msgnumber=1&token=%token%
attr JUDO_iSoft get49Name Hardness_Residual
attr JUDO_iSoft get49URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%
attr JUDO_iSoft get50Name Hardness_Natural
attr JUDO_iSoft get50URL https://%JUDO_ipaddress%:8124/?group=info&command=natural%20hardness&msgnumber=1&token=%token%
attr JUDO_iSoft get53Name Regeneration
attr JUDO_iSoft get53URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%
attr JUDO_iSoft get55Name Waterstop_Standby
attr JUDO_iSoft get55URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%
attr JUDO_iSoft get58Name Waterstop_Valve
attr JUDO_iSoft get58URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%
attr JUDO_iSoft get60Name Waterstop_Abstraction_Time
attr JUDO_iSoft get60URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=abstraction%20time&msgnumber=1&token=%token%
attr JUDO_iSoft get62Name Waterstop_Flow_Rate
attr JUDO_iSoft get62URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%
attr JUDO_iSoft get64Name Waterstop_Quantity
attr JUDO_iSoft get64URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get66Name Waterstop_Vacation
attr JUDO_iSoft get66URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%
attr JUDO_iSoft getHeader1 Content-Type: application/json
attr JUDO_iSoft getHeader2 Accept: */*
attr JUDO_iSoft reAuthRegex (no token)|(not logged in)|(Connection refused)
attr JUDO_iSoft reading01Name token
attr JUDO_iSoft reading01Regex "token":"([^"]+)"
attr JUDO_iSoft reading22Name version_SoftwareVersion
attr JUDO_iSoft reading22Regex "software version","data":"(.*)","group":"version"
attr JUDO_iSoft reading23Name version_HardwareVersion
attr JUDO_iSoft reading23Regex "hardware version","data":"(.*)","group":"version"
attr JUDO_iSoft reading28Name spare_part_SerialNumber
attr JUDO_iSoft reading28Regex "serial number","data":"(.*)","group":"spare part"
attr JUDO_iSoft reading32Name contract_InitDate
attr JUDO_iSoft reading32OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr JUDO_iSoft reading32Regex "init date","data":"(.*)","group":"contract"
attr JUDO_iSoft reading34Name contract_ServiceDate
attr JUDO_iSoft reading34OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr JUDO_iSoft reading34Regex "service date","data":"(.*)","group":"contract"
attr JUDO_iSoft reading351Name consumption_WaterCurrentRaw
attr JUDO_iSoft reading351Regex "command":"water current","data":"(.*) .*","group":"consumption"
attr JUDO_iSoft reading352Name consumption_WaterCurrentSoft
attr JUDO_iSoft reading352Regex "command":"water current","data":".* (.*)","group":"consumption"
attr JUDO_iSoft reading401Name consumption_WaterTotalRaw
attr JUDO_iSoft reading401Regex "command":"water total","data":" (\d+) \d+","group":"consumption"
attr JUDO_iSoft reading402Name consumption_WaterTotalSoft
attr JUDO_iSoft reading402Regex "command":"water total","data":" \d+ (\d+)","group":"consumption"
attr JUDO_iSoft reading411Name consumption_WaterOfDaysDate
attr JUDO_iSoft reading411Regex "command":"water weekly.*"day":(\d+),"group".*"month":(\d+),"msg.*"offset":"(-?\d+)","status.*"week":(\d+),"year":(\d+),"wtu
attr JUDO_iSoft reading412Name consumption_WaterOfDaysByDay
attr JUDO_iSoft reading412Regex "command":"water weekly","data":" (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+).*offset
attr JUDO_iSoft reading42Name consumption_WaterAverage
attr JUDO_iSoft reading42Regex "command":"water average","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading43Name consumption_ActualAbstractionTime
attr JUDO_iSoft reading43Regex "command":"actual abstraction time","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading44Name consumption_ActualQuantity
attr JUDO_iSoft reading44Regex "command":"actual quantity","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading45Name consumption_SaltQuantityInPercent
attr JUDO_iSoft reading45OExpr int($val/50000*100)
attr JUDO_iSoft reading45Regex "command":"salt quantity","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading451Name consumption_SaltQuantityIn_kg
attr JUDO_iSoft reading451OExpr int($val/1000)
attr JUDO_iSoft reading451Regex "command":"salt quantity","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading471Name consumption_SaltRangeInWeeks
attr JUDO_iSoft reading471OExpr int($val/7)
attr JUDO_iSoft reading471Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading47Name consumption_SaltRangeInDays
attr JUDO_iSoft reading47Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading49Name settings_ResidualHardness
attr JUDO_iSoft reading49Regex "residual hardness","data":"(\d+)","group":"settings"
attr JUDO_iSoft reading50Name info_NaturalHardness
attr JUDO_iSoft reading50Regex "natural hardness","data":"(\d+)","group":"info"
attr JUDO_iSoft reading53Name settings_Regeneration
attr JUDO_iSoft reading53Regex "command":"regeneration","data":"(.*)","group":"settings"
attr JUDO_iSoft reading55Name waterstop_Standby
attr JUDO_iSoft reading55Regex "command":"standby","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading58Name waterstop_State
attr JUDO_iSoft reading58Regex "command":"valve","data":"(\w+)","group":"waterstop"
attr JUDO_iSoft reading60Name waterstop_AbstractionTime
attr JUDO_iSoft reading60Regex "command":"abstraction time","data":"(\w+)","group":"waterstop"
attr JUDO_iSoft reading62Name waterstop_FlowRate
attr JUDO_iSoft reading62Regex "flow rate","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading64Name waterstop_Quantity
attr JUDO_iSoft reading64Regex "command":"quantity","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading66Name waterstop_Vacation
attr JUDO_iSoft reading66Regex "command":"vacation","data":"(.*)","group":"waterstop"
attr JUDO_iSoft replacement01Mode reading
attr JUDO_iSoft replacement01Regex %token%
attr JUDO_iSoft replacement01Value token
attr JUDO_iSoft replacement02Mode text
attr JUDO_iSoft replacement02Regex %JUDO_ipaddress%
attr JUDO_iSoft replacement02Value 192.168.178.xxx
attr JUDO_iSoft replacement03Mode text
attr JUDO_iSoft replacement03Regex %JUDO_password%
attr JUDO_iSoft replacement03Value < Passwort >
attr JUDO_iSoft replacement04Mode text
attr JUDO_iSoft replacement04Regex %JUDO_username%
attr JUDO_iSoft replacement04Value < Benutzername >
attr JUDO_iSoft replacement05Mode text
attr JUDO_iSoft replacement05Regex %JUDO_serial%
attr JUDO_iSoft replacement05Value < Seriennummer >
attr JUDO_iSoft replacement06Mode reading
attr JUDO_iSoft replacement06Regex %_YEAR%
attr JUDO_iSoft replacement06Value _YEAR
attr JUDO_iSoft replacement07Mode reading
attr JUDO_iSoft replacement07Regex %_MONTH%
attr JUDO_iSoft replacement07Value _MONTH
attr JUDO_iSoft replacement08Mode reading
attr JUDO_iSoft replacement08Regex %_DAY%
attr JUDO_iSoft replacement08Value _DAY
attr JUDO_iSoft replacement09Mode reading
attr JUDO_iSoft replacement09Regex %_OFFSET%
attr JUDO_iSoft replacement09Value _OFFSET
attr JUDO_iSoft replacement10Mode reading
attr JUDO_iSoft replacement10Regex %_OFFSET%
attr JUDO_iSoft replacement10Value _OFFSET
attr JUDO_iSoft room Wasser
attr JUDO_iSoft set46FollowGet Salt_Quantity
attr JUDO_iSoft set46IExpr $val*1000
attr JUDO_iSoft set46Name Salt_Quantity
attr JUDO_iSoft set46URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set48FollowGet Hardness_Residual
attr JUDO_iSoft set48Hint slider,6,1,10
attr JUDO_iSoft set48Name Hardness_Residual
attr JUDO_iSoft set48URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set51FollowGet Regeneration
attr JUDO_iSoft set51Hint start,stop
attr JUDO_iSoft set51Name Regeneration
attr JUDO_iSoft set51NoArg 1
attr JUDO_iSoft set51TextArg 1
attr JUDO_iSoft set51URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set54FollowGet Waterstop_Standby
attr JUDO_iSoft set54Hint 0,1
attr JUDO_iSoft set54Name Waterstop_Standby
attr JUDO_iSoft set54URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set56FollowGet Waterstop_Vacation
attr JUDO_iSoft set56Hint close,open
attr JUDO_iSoft set56Name Waterstop_Valve
attr JUDO_iSoft set56NoArg 1
attr JUDO_iSoft set56TextArg 1
attr JUDO_iSoft set56URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set59FollowGet Waterstop_Abstraction_Time
attr JUDO_iSoft set59Hint slider,1,1,31
attr JUDO_iSoft set59Name Waterstop_Abstraction_Time
attr JUDO_iSoft set59URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=abstraction%20time&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set61FollowGet Waterstop_Flow_Rate
attr JUDO_iSoft set61Hint slider,0,500,5000
attr JUDO_iSoft set61Name Waterstop_Flow_Rate
attr JUDO_iSoft set61URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set63FollowGet Waterstop_Quantity
attr JUDO_iSoft set63Hint slider,100,100,3000
attr JUDO_iSoft set63Name Waterstop_Quantity
attr JUDO_iSoft set63URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set65FollowGet Waterstop_Vacation
attr JUDO_iSoft set65Hint slider,0,1,31
attr JUDO_iSoft set65Name Waterstop_Vacation
attr JUDO_iSoft set65URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft showBody 1
attr JUDO_iSoft showError 1
attr JUDO_iSoft sid01ParseResponse 1
attr JUDO_iSoft sid01URL https://%JUDO_ipaddress%:8124/?group=register&command=login&msgnumber=1&name=login&user=%JUDO_username%&password=%JUDO_password%&role=customer
attr JUDO_iSoft sid02URL https://%JUDO_ipaddress%:8124/?group=register&command=connect&msgnumber=6&token=%token%&parameter=i-soft%20plus&serial%20number=%JUDO_serial%
attr JUDO_iSoft stateFormat {\
 my $l1   = ReadingsVal("$name","waterstop_State", "");;\
 my $l2   = ReadingsVal("$name","waterstop_FlowRate", "")." l";;\
 my $l3   = ReadingsVal("$name","waterstop_Quantity", "")." l";;\
 my $l4   = ReadingsVal("$name","waterstop_AbstractionTime", "")." Min";;\
 my $l5   = ReadingsVal("$name","waterstop_Vacation", "");;\
 my $l6   = ReadingsVal("$name","waterstop_Standby", "");;\
 my $d1   = ReadingsVal("$name","consumption_ActualQuantity", "")." l";;\
 my $d2   = ReadingsVal("$name","consumption_WaterAverage", "")." l";;\
 my $d3   = ReadingsVal("$name","consumption_WaterCurrentSoft", "")." l";;\
 my $d4   = ReadingsVal("$name","consumption_WaterCurrentRaw", "")." l";;\
 my $d5   = round(ReadingsVal("$name","consumption_WaterTotalSoft_X", "")/1000 ,3)." m³";;\
 my $d6   = round(ReadingsVal("$name","consumption_WaterTotalRaw_X", "")/1000 ,3)." m³";;\
 my $v1   = round(ReadingsVal("$name","consumption_WaterTotalRaw_X", "")/1000 ,3)." m³";;\
 my $v2   = ReadingsVal("$name","consumption_WaterDailySumme", "")." l";;\
 my $v3   = ReadingsVal("$name","consumption_WaterWeeklySumme", "")." l";;\
 my $h1   = ReadingsVal("$name","info_NaturalHardness", "")." °dH";;\
 my $h2   = ReadingsVal("$name","settings_ResidualHardness", "")." °dH";;\
 my $s1   = ReadingsVal("$name","consumption_SaltQuantityInPercent", "")." %";;\
 my $s2   = ReadingsVal("$name","consumption_SaltRangeInWeeks", "")." W";;\
 my $s3   = ReadingsVal("$name","consumption_SaltRangeInDays", "")." T";;\
\
"<html><table border=2 bordercolor='darkgreen' cellspacing=0>\
<tr><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Leckageschutz</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Einstellung</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Wasser</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Verbrauch</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Status</td><td style='padding-right:5px;;padding-left:5px'>".$l1."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$v1."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Max Durchfluss</td><td style='padding-right:5px;;padding-left:5px'>".$l2."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>aktuell</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Entnahme</td><td style='padding-right:5px;;padding-left:5px'>".$l3."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Tag</td><td style='padding-right:5px;;padding-left:5px'>".$v2."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Entnahmedauer</td><td style='padding-right:5px;;padding-left:5px'>".$l4."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Woche</td><td style='padding-right:5px;;padding-left:5px'>".$v3."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Urlaubsmodus</td><td style='padding-right:5px;;padding-left:5px'>".$l5."</td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Sleepmodusdauer</td><td style='padding-right:5px;;padding-left:5px'>".$l6."</td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'> </td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Wasser</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Menge</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Wasserhärte</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Durchfluss aktuell</td><td style='padding-right:5px;;padding-left:5px'>".$d1."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;natürlich</td><td style='padding-right:5px;;padding-left:5px'>".$h1."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Durchschnitt</td><td style='padding-right:5px;;padding-left:5px'>".$d2."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;wunsch</td><td style='padding-right:5px;;padding-left:5px'>".$h2."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Soft</td><td style='padding-right:5px;;padding-left:5px'>".$d3."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Salzvorrat</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Raw</td><td style='padding-right:5px;;padding-left:5px'>".$d4."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Menge</td><td style='padding-right:5px;;padding-left:5px'>".$s1."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Soft gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$d5."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Reichweite</td><td style='padding-right:5px;;padding-left:5px'>".$s2."</td></tr>\
 <tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Raw gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$d6."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Reichweite</td><td style='padding-right:5px;;padding-left:5px'>".$s3."</td></tr>\
 </table></html>"\
}
attr JUDO_iSoft timeout 10
attr JUDO_iSoft userReadings consumption_WaterDailySumme:consumption_WaterDaily3Hour-01.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterDaily3Hour-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Daily-.*");; $s},\
\
consumption_report_WaterDailyDate:consumption_report_WaterDaily3Hour-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
consumption_report_WaterDailySumme:consumption_report_WaterDailyDate.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterDaily3Hour-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_report_WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME Report_Water_Daily-.*");; $s},\
\
consumption_WaterWeeklySumme:consumption_WaterWeeklyByDay-01.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterWeeklyByDay-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME Water_Weekly-.*");; $s},\
\
consumption_report_WaterWeeklyDate:consumption_report_WaterWeeklyByDay-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
consumption_report_WaterWeeklySumme:consumption_report_WaterWeeklyDate.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterWeeklyByDay-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_report_WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Weekly-.*");; $s},\
\
consumption_WaterMonthlySumme:consumption_WaterMonthlyByDay-01.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterMonthlyByDay-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Monthly-.*");; $s},\
\
consumption_report_WaterMonthlyDate:consumption_report_WaterMonthlyByDay-01.* {my $date=sprintf("%4d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0) );; $date },\
\
consumption_report_WaterMonthlySumme:consumption_report_WaterMonthlyDate.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterMonthlyByDay-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_report_WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Monthly-.*");; $s},\
\
consumption_WaterYearSumme:consumption_WaterYearByMonth-01.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterYearByMonth-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Yearly-.*");; $s},\
\
consumption_report_WaterYearDate:consumption_report_WaterYearByMonth-01.* {my $date=sprintf("%4d",ReadingsVal("$NAME","_YEAR",0) );; $date },\
\
consumption_report_WaterYearSumme:consumption_report_WaterYearDate.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterYearByMonth-".sprintf("%02d",$i),0) gt 0)?$s += ReadingsVal("$NAME","consumption_report_WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Yearly-.*");; $s},\
\
consumption_WaterOfDaysDate:consumption_WaterOfDaysDate-1.* {my $NAME="JUDO_iSoft" ;; my $date=sprintf("%4d-%02d-%02d Week %02d used Offset %d", ReadingsVal("$NAME","consumption_WaterOfDaysDate-5",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-2",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-1",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-4",0),ReadingsVal("$NAME","_OFFSET",0) );; CommandDeleteReading(undef, $NAME."  consumption_WaterOfDaysDate-.*");; $date },\
\
consumption_WaterTotalRaw_X:consumption_WaterTotalRaw.* monotonic { ReadingsVal($NAME,"consumption_WaterTotalRaw",0) },\
consumption_WaterTotalSoft_X:consumption_WaterTotalSoft.* monotonic { ReadingsVal($NAME,"consumption_WaterTotalSoft",0) }\
\

attr JUDO_iSoft verbose 0

#### Diese readings sollten gesetzt werden, da sie von einigen Abfragen beim http get verwendet werden.
setstate JUDO_iSoft 2020-06-11 22:41:12 _DAY 22
setstate JUDO_iSoft 2020-06-11 18:10:39 _MONTH 08
setstate JUDO_iSoft 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft 2020-06-11 18:10:54 _YEAR 2022

Und hier kommt das Wasser_Schedule Device.
Hier gebt mir bitte noch wünsche und Ideen an.
defmod Wasser_Schedule DOIF ################################################################################################################\
## 1 Wasser regelmäßig abfragen\
##\
([+00:02])\
\
 (get JUDO_iSoft Water_Current) \
 (get JUDO_iSoft Water_Daily) \
 (get JUDO_iSoft Hardness_Natural) \
 (get JUDO_iSoft Waterstop_Valve) \
\
################################################################################################################\
## Service Werte abholen \
##\
DOELSEIF\
(\
 [+[1]:29]\
 and\
 [+[1]:59]\
) \
\
 (get JUDO_iSoft Water_Total)\
 (get JUDO_iSoft Water_Average) \
 (get JUDO_iSoft Waterstop_ActualAbstractionTime) \
 (get JUDO_iSoft Waterstop_ActualQuantity) \
 (get JUDO_iSoft Salt_Quantity) \
 (get JUDO_iSoft Salt_Range) \
 (get JUDO_iSoft Hardness_Residual) \
 (get JUDO_iSoft Waterstop_Abstraction_Time) \
 (get JUDO_iSoft Waterstop_Flow_Rate) \
 (get JUDO_iSoft Waterstop_Quantity) \
\
################################################################################################################\
## Tages Werte abfragen\
##\
DOELSEIF\
([23:59]) \
 (get JUDO_iSoft Water_Daily) \
 (get JUDO_iSoft Water_Total) \
 (get JUDO_iSoft Salt_Quantity) \
 (get JUDO_iSoft Salt_Range) \
 (get JUDO_iSoft Hardness_Residual) \
 (get JUDO_iSoft Hardness_Natural)\
\
 { if ($wday==7)\
     { fhem("get JUDO_iSoft Water_Weekly");;;; }\
 }\
 { if ($wday==7)\
     { fhem("deletereading JUDO_iSoft consumption_WaterWeeklyByDay.*");;;; }\
 }\
\

attr Wasser_Schedule DbLogExclude .*
attr Wasser_Schedule alias Wasser_Schedule
attr Wasser_Schedule comment Version 2020.10.19 11:33
attr Wasser_Schedule disable 0
attr Wasser_Schedule do always
attr Wasser_Schedule event-on-change-reading state,.*
attr Wasser_Schedule room Wasser
attr Wasser_Schedule verbose 0
attr Wasser_Schedule wait 0,3,3,3:0,3,3,3,3,3,3,3,3,3:0,3,3,3,3,3,3,3
attr Wasser_Schedule webCmd cmd_1:cmd_2:cmd_3

Bisher habe ich folgenden Plotabriss entdeckt, was natürlich davon abhängt, was Ihr loggt :-)
Hier ein Fragment aus Meinem DOIF für die Behebung
## Tägliche Einträge
DOELSEIF
([00:01])(
   {addLog("LogDB", "JUDO_iSoft"      , "consumption_SaltRangeInWeeks")}
   {addLog("LogDB", "JUDO_iSoft"      , "consumption_SaltQuantityInPercent")}
  )

Viele Grüße
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 25 Juni 2020, 12:57:34
In der Standard Definition der JUDO_iSoft_test ist kein DbLog aktiviert. Wenn die Werte in die Datenbank sollen, dann muss noch folgendes Attribut konfiguriert und gesetzt werden.

attr JUDO_iSoft_test DbLogInclude consumption_WaterCurrent.*,consumption_WaterDaily.*,consumption_WaterWeekly.*


1) 35_water_current: Abfrage des Momentanen Wasserverbrauchs

get JUDO_iSoft_test 35_water_current


Und nun kann man es sich einfach machen, wenn man auch kumulierte Werte haben möchte, denn diese werden vom iSoft Plus bereits geliefert.

2) 36_water_Daily: liefert die drei Stundenwerte des aktuellen Abfragedatums. Werte, die noch nicht vorhanden sind werden mit -1 ausgegeben.
1 ist von 00:00 bis 02:59 Uhr
2 ist von 03:00 bis 05:59 Uhr
3 ist von 06:00 bis 08:59 Uhr
4 ist von 09:00 bis 11:59 Uhr
5 ist von 12:00 bis 14:59 Uhr
6 ist von 15:00 bis 17:59 Uhr
7 ist von 18:00 bis 20:59 Uhr
8 ist von 21:00 bis 23:59 Uhr

get JUDO_iSoft_test 35_water_Daily


3) 37_water_Weekly: liefert die Tageswerte einer gesamten Woche. Wichtig dabei ist jedoch, dass man die readings passend zur Woche setzt, wobei der Tag beliebig innerhalb der Woche liegen kann.

setreading JUDO_iSoft_test _YEAR 2020
setreading JUDO_iSoft_test _MONTH 08
setreading JUDO_iSoft_test _DAY 19
get JUDO_iSoft_test 35_water_Weekly


4) Nun auch ein Beispiel für einen etwas komplexeren Wochenvergleich mit _OFFSET


### Folgende Variablen werden bei einigen Http get Aufrufen ersetzt.

### zuerst setzt man den Ersten Tag der Woche die man vergleichen möchte
### (es wird auch jeder andere Tag innerhalb der gewünschten Woche akzeptiert)
setreading JUDO_iSoft_test _YEAR 2020
setreading JUDO_iSoft_test _MONTH 06
setreading JUDO_iSoft_test _DAY 1

### für die Abfrage der vorherigen Woche setzt man den Offset auf minus eins
setreading JUDO_iSoft_test _OFFSET -1


Nun werden zwei Abfragen gestartet, da es bisher keine zyklischen Aufrufe gibt.

get JUDO_iSoft_test 37_water_weekly
get JUDO_iSoft_test 41_water_of_days


In den aktualisierten, oder neu erstellten readings kann man nun den Wasserverbrauch Tageweise mit der Vorwoche vergleichen. Hierbei beginnt die Woche immer mit Montag ByDay-1

READINGS:
     2020-06-11 22:41:12   _DAY            1
     2020-06-11 18:10:39   _MONTH          06
     2020-06-25 10:59:06   _OFFSET         -1
     2020-06-11 18:10:54   _YEAR           2020
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-1 192
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-2 81
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-3 244
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-4 98
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-5 246
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-6 318
     2020-06-25 11:17:28   consumption_WaterOfDaysByDay-7 287
     2020-06-25 11:17:28   consumption_WaterOfDaysDate 2020-05-25 Week 22 used Offset -1
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-1 397
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-2 131
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-3 80
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-4 181
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-5 164
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-6 95
     2020-06-25 11:15:33   consumption_WaterWeeklyByDay-7 333
     2020-06-25 11:15:33   consumption_WaterWeeklyDate 2020-06-01 Week 23


Möchte man nun die readings mal wieder bereinigen ist das mit dem folgenden Befehl möglich. Durch das Aufteilen der Judo iSoft Rückmeldungen in einzelne readings kann es ja auch mal schnell unübersichtlich werden.

deletereading JUDO_iSoft_test consumption.*


Anmerkung: Bei der Abfrage mit Offset wird in der Judo_iSoft das entsprechende Datum errechnet, bei der Rückmeldung steht jedoch immer "offset","0" im JSON String! Dies habe ich bei der Anzeige im userreading korrigiert, sodass im reading consumption_WaterOfDaysDate der verwendete Offset angezeigt wird.

In diesem Device habe ich in der Definition noch kein Logging in die LogDB konfiguriert.

Viele Grüsse
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 17 August 2020, 16:03:27
Hallo,

erstmal vielen Dank für das Wiki, tolle Sache.

Beim  Setzen des Attribut
attr JUDO_iSoft reading03OExpr $val =~ s/\s/-/;; $val; readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data",""))

bekomme ich den folgenden Error:
Unknown command readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data","")), try help.

Fehler im Wiki oder vor dem Monitor?  ;)

PS: Das Attribut "showError" möchte auch einen Wert (0, 1)  ;)

UPDATE:
Könnte es sein, dass im reading03OExpr das Semikolon verdoppelt werden muss?
attr JUDO_iSoft reading03OExpr $val =~ s/\s/-/;; $val;; readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data",""))

UPDATE2:
Die AT's erzeugen bei mir im Log die folgenden Fehlermeldungen (je ein Eintrag pro Reading):
JUDO_iSoft: FormatReadig OExpr $val =~ s/\s/-/; $val; readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data","")) created warning: Useless use of private variable in void context at (eval 311670) line 1.

Danke und schöne Grüße
Dirk

Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 17 August 2020, 20:44:54
Hallo Dirk,
schön, dass es jemand anwenden möchte :-)

Ich habe gar kein "reading03OExpr" in meiner definition und "readingsBulkUpdate" kommt mir auch komisch vor.

Für heute Abend setze ich mal eine aktuelle RAW Definition in den ersten Post. verwende das bitte mal und stell bei weiteren Fehlern mal Deine Definition hier rein.

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 18 August 2020, 10:20:28
Übrigens, das Wiki ist nicht von mir. Ich habe die readings nur erweitert und auf den iSoft Plus optimiert.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 18 August 2020, 12:34:11
Hallo Christian,

Danke für die Rückmeldung  :)

Ich hatte mich durch das Wiki https://wiki.fhem.de/wiki/JUDO_iSoft_Plus (https://wiki.fhem.de/wiki/JUDO_iSoft_Plus) gearbeitet.
Dort stecken scheinbar mindestens 2 Fehler drin, den ersten konnte ich eliminieren (doppeltes Semikolon).

Aber wenn das nicht von Dir ist, vielleicht ist Deine Info (RAW) ja eine Alternative. Teste ich mal.
Dazu eine Frage:
#### Diese readings sollten gesetzt werden, da sie von einigen Abfragen beim http get verwendet werden.
setstate JUDO_iSoft_test 2020-06-11 22:41:12 _DAY 1
setstate JUDO_iSoft_test 2020-06-11 18:10:39 _MONTH 06
setstate JUDO_iSoft_test 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft_test 2020-06-11 18:10:54 _YEAR 2020


Was wird denn damit gesetzt, der Monat hart auf 06 und das Jahr hart auf 2020?

Nutzt du noch AT's zur Aktualisierung?

Danke bis dahin und schöne Grüße
Dirk
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 18 August 2020, 21:31:28
Hallo Dirk,
okay das Wiki ist die ältere Grundlage und beschreibt die Grundinstallation mit der Aktivierung recht gut. Wenn das läuft, kannst Du meine RAW Definition z.B. unter einem anderen Namen parallel verwenden, oder einfach austauschen. In dem Wiki wird nicht alles, was die iSoft Geräte können umgesetzt. Schau es Dir einfach mal an.

Die Readings werden in meiner Beispielanwendung (https://forum.fhem.de/index.php/topic,112147.msg1067523.html#msg1067523) beschrieben und dienen als Steuerung für die iSoft abfragen. Dazu steht nichts im Wiki.

AT's verwende ich sehr selten, weil ich DOIF sehr gut finde. Du kannst aber eine regelmäßige Aktualisierung auch mit ATs machen. Für iSoft habe ich da aber noch nichts implementiert.
Bei Fragen melde Dich einfach nochmal.

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 19 August 2020, 10:18:02
Hallo zusammen,
ich habe noch einige Beispiele ergänzt: Beispielanwendung (https://forum.fhem.de/index.php/topic,112147.msg1067523.html#msg1067523)

1) 35_water_current: Abfrage des Momentanen Wasserverbrauchs
2) 36_water_Daily: liefert die drei Stundenwerte des aktuellen Abfragedatums. Werte, die noch nicht vorhanden sind werden mit -1 ausgegeben.
3) 37_water_Weekly: liefert die Tageswerte einer gesamten Woche. Wichtig dabei ist jedoch, dass man die readings passend zur Woche setzt, wobei der Tag beliebig innerhalb der Woche liegen kann.
4) Nun auch ein Beispiel für einen etwas komplexeren Wochenvergleich mit _OFFSET

Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 08 Oktober 2020, 10:58:20
Moin Christian,

vielen Dank für Deine Zeit und "knoff hoff".  8)

Hast Du eventuell einen Tipp für mich, wie ich auch die Werte von "get xyz 42_water_average" als "consumpion_WaterAverage" erhalten könnte?
(Habe Deine Vorlage "Hier der aktuelle Stand:" aus Post1 verwendet.)

Mit dankenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 08 Oktober 2020, 11:34:34
Zitat von: Sunny am 08 Oktober 2020, 10:58:20
Hast Du eventuell einen Tipp für mich, wie ich auch die Werte von "get xyz 42_water_average" als "consumpion_WaterAverage" erhalten könnte?
Moin Sunny,
wo auch immer der Unterschied sein mag??? Ich habe folgendes Attribut mit regex101.com ermittelt und im ersten Post nochmals überschrieben
und auch "\d+" verwendet, was jedoch nicht der Fehler gewesen ist.
Bei mir ging es nämlich auch nicht ;-)

attr JUDO_iSoft_test reading42Regex "command":"water average","data":"(\d+)","group":"consumption"


Du darfst gerne noch weiter nach Fehlern suchen 8)

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 08 Oktober 2020, 12:44:41
Es gab dann noch einen weitern Update:
Das ist jetzt auch im ersten Post mit übernommen...

attr JUDO_iSoft_test reading42Name consumption_WaterAverage
attr JUDO_iSoft_test reading42Regex "command":"water average","data":"(\d+)","group":"consumption"
attr JUDO_iSoft_test reading44Name waterstop_Quantity
attr JUDO_iSoft_test reading44Regex "command":"quantity","data":"(.*)","group":"waterstop"
attr JUDO_iSoft_test reading45Name consumption_SaltQuantityInPercent
attr JUDO_iSoft_test reading45OExpr int($val/50000*100)
attr JUDO_iSoft_test reading45Regex "command":"salt quantity","data":"(.*)","group":"consumption"
attr JUDO_iSoft_test reading47Name consumption_SaltRangeInWeeks
attr JUDO_iSoft_test reading47OExpr int($val/7)
attr JUDO_iSoft_test reading47Regex "command":"salt range","data":"(.*)","group":"consumption"
attr JUDO_iSoft_test reading49Name settings_ResidualHardness
attr JUDO_iSoft_test reading49Regex "residual hardness","data":"(.*)","group":"settings"
attr JUDO_iSoft_test reading50Name info_NaturalHardness
attr JUDO_iSoft_test reading50Regex "natural hardness","data":"(.*)","group":"info"
attr JUDO_iSoft_test reading58Name waterstop_State
attr JUDO_iSoft_test reading58Regex "command":"valve","data":"(.*)","group":"waterstop"
attr JUDO_iSoft_test reading62Name waterstop_FlowRate
attr JUDO_iSoft_test reading62Regex "flow rate","data":"(.*)","group":"waterstop"
attr JUDO_iSoft_test reading66Name waterstop_Vacation
attr JUDO_iSoft_test reading66Regex "command":"vacation","data":"(.*)","group":"waterstop"
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 08 Oktober 2020, 13:26:36
Moinsen Christian,

du bist ja schneller, als Brezeln backen. ;)

Hoffe ich habe mich nicht verkehrt aus gedrückt,
ich freue mich über die Möglichkeiten Daten aus der i-soft per fhem aus zulesen. 8)

Da ich die Anlage neu habe, schaue ich was geht.

Danke Dein patch funzt.

Vielleicht kannst Du ja auch noch folgendes "fixen" (falls es bei Dir auch nicht funktioniert):
1. "get xyz 38_water_monthly" gibt bei mir noch keine Werte.
2. "get xyz 39_water_yearly" liefert auch noch keine readings.
3. "get xyz 53_regeneration" will auch keine Werte verraten.

Auch hast Du mir heute schon aus der Patsche geholfen,
da weder die App noch der Server erreichbar waren.
Trotzdem konnte ich, per "set 61_flow_rate 1500", den Max.Wasserdurchfluss erhöhen.  8)

Allerbeste Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 08 Oktober 2020, 15:24:35
Zitat von: Sunny am 08 Oktober 2020, 13:26:36
Vielleicht kannst Du ja auch noch folgendes "fixen" (falls es bei Dir auch nicht funktioniert):
1. "get xyz 38_water_monthly" gibt bei mir noch keine Werte.
2. "get xyz 39_water_yearly" liefert auch noch keine readings.
3. "get xyz 53_regeneration" will auch keine Werte verraten.
zu 1. und 2.) Um das nutzen zu können musst Du folgende readings setzen
zum Beispiel so, aber lies bitte nochmal bei den Beispielen, ich habe das auch noch nicht genutzt

_DAY 08
_MONTH 10
_YEAR 2020

Das sind dann die Variablen, die hier im Aufruf verwendet werden
get38Name 38_water_monthly
get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%
get39Name 39_water_yearly
get39URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%&year=%_YEAR%


zu 3.) Das kannst du schon mal ersetzen, ich werde jedoch noch einiges weiteres ändern

attr JUDO_iSoft_test reading53Name settings_Regeneration
attr JUDO_iSoft_test reading53Regex "command":"regeneration","data":"(.*)","group":"settings"
attr JUDO_iSoft_test reading55Name waterstop_Standby
attr JUDO_iSoft_test reading55Regex "command":"standby","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft_test set51Name 51_regeneration_start
attr JUDO_iSoft_test set52Name 52_regeneration_stop
deleteattr JUDO_iSoft_test get54Name
deleteattr JUDO_iSoft_test get54URL
attr JUDO_iSoft_test set54Name 54_standby
attr JUDO_iSoft_test set54URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%&parameter=$val

deleteattr JUDO_iSoft_test set03Name
deleteattr JUDO_iSoft_test set03URL
deleteattr JUDO_iSoft_test set03Hint

attr JUDO_iSoft_test set01NoArg 1
attr JUDO_iSoft_test set02NoArg 1
attr JUDO_iSoft_test set51NoArg 1
attr JUDO_iSoft_test set52NoArg 1
attr JUDO_iSoft_test set56NoArg 1
attr JUDO_iSoft_test set57NoArg 1

# Bitte um Rückmeldung, ob diese Werte Sinn machen
attr JUDO_iSoft_test set48Hint slider,4,1,15
attr JUDO_iSoft_test set54Hint 0,1
attr JUDO_iSoft_test set59Hint slider,1,1,31
attr JUDO_iSoft_test set61Hint slider,0,1,10
attr JUDO_iSoft_test set63Hint slider,100,100,2000
attr JUDO_iSoft_test set65Hint slider,0,1,31


Bisher hat sich wohl noch niemand dafür interessiert und ich hatte noch keine Anwendung implementiert.
Bitte teste einfach weiter, dann bekommen wir es schon zusammen hin :-)

Interessant wäre jetzt mal die Regenerierung. Hier habe ich noch nie manuell gestartet oder gestoppt. Wenn etwas nicht klappt, schick mir einfach den httpbody, der als Meldung zurück kommt.

EDIT: Es sind noch Attribute dazu gekommen
Die Regeneration lässt sich nun starten und der Zustand abfrage. Es Regeneration stop zeigt jedoch keine direkte Wirkung. Nach einigen Minuten stoppt die Regeneration dann, jedoch kenne ich nicht die normale Laufzeit. Wenn hier jemand man Muße hat und das detaillierter testen könnte, wäre das toll. Bitte mit Rückmeldung ;-)

Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 08 Oktober 2020, 16:33:01
Was nun noch fehlt wären definierte Abläufe, die ich dann gerne implementieren würde.

der Hintergrund ist, dass man jetzt viel starten und stoppen kann, oder auch Abfragen durchführen kann, jedoch macht das nur Sinn, wenn es eine Regelmäßigkeit gibt, aus der man auch Rückschlüsse zieht.

Einfache Abläufe wären z.B.

1.) Überwachung des Wasserstop

2.) Regeneration ( die jedoch auch automatisch läuft )

Start der Regeneration
Zyklische Abfrage des Regenerationszustandes
Stop der Regeneration, wenn sie nicht nach n Minuten fertig ist.


3.) Veränderung des Härtegrades, wenn die Waschmaschine startet.

4.) Abfragen von Statistiken

5.) Auswerten von Statistiken

Bitte gebt hierzu mal eine Rückmeldung
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 08 Oktober 2020, 20:03:05
Moin Christian,

erst einmal Danke für Deine Antworten.  8)

Folgendes hatte ich gesetzt:

_DAY 08
_MONTH 10
_YEAR 2020

und dann diese Readings (httpbody?) erhalten:

command regeneration
data 192, lso, lsu

command water monthly
data 443 628 271 249 370 263 112 181 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

command water yearly
data -1 -1 -1 -1 -1 -1 -1 -1 884 2517 -1 -1



Meine i-soft Version:

HardwareVersion 5.10
SoftwareVersion 02.09.h


Zitat von: ch.eick am 08 Oktober 2020, 15:24:35
# Bitte um Rückmeldung, ob diese Werte Sinn machen
[/code]
folgendes habe ich verändert/getestet:

## Für Einheit °dH
attr JUDO_iSoft_test set48Hint slider,4,1,10

## Schritte aus der App übernommen
attr JUDO_iSoft_test set61Hint slider,0,500,5000


Ist "60_abstraction_time" <=> "Max.Entnahmedauer"?
command actual abstraction time
data 10

Würde bei mir passen.


Finde "set63Hint" ist so ok.
Nicht getestet habe ich "set65Hint", "set59Hint" & "set54Hint"

Zitat von: ch.eick am 08 Oktober 2020, 16:33:01
1.) Überwachung des Wasserstop                                   | Würde ich mich sehr freuen, da meine Anlage ca. 300km entfernt steht.
2.) Regeneration ( die jedoch auch automatisch läuft )     | Wäre intersseant, die Anzahl zu erhalten und evt. stopen zu können, falls ein Fehler geben sollte.
4.) Abfragen von Statistiken                                           | Was wäre da denn noch möglich?
5.) Auswerten von Statistiken                                         | Würde ich mich sehr darüber freuen. Besonders über die Verbrauchsdaten.

Mit "gespannten" Grüßen
sunny

<Edit an>
Habe gerade Werte von "43_actual_abstraction_time" als Reading "consumption_ActualAbstractionTime" erhaltzen.  ;D
Folgendes habe ich hinzugefügt:
attr JUDO_iSoft_test reading43Name consumption_ActualAbstractionTime
attr JUDO_iSoft_test reading43Regex "actual abstraction time","data":"(\d+)","group":"consumption"


Noch mein "stateformat":
attr JUDO_iSoft_test stateFormat Status: status<br>\
Ventil: waterstop_State<br>\
Leckage Liter/Std: waterstop_FlowRate<br>\
Leckage max Liter: waterstop_Quantity<br>\
Leckage Zeit: consumption_ActualAbstractionTime min<br>\
Salz Vorrat : consumption_SaltQuantityInPercent %<br>\
Salz Vorrat: consumption_SaltRangeInWeeks Wochen<br>\
H2O Durchschnitt: consumption_WaterAverage l<br>\
H2O Jetzt: consumption_WaterCurrentRaw l<br>\
H2O Gesamt: consumption_WaterTotalRaw l<br>\
Aussen Haerte: info_NaturalHardness dH<br>\
Eingestellte Haerte: settings_ResidualHardness dH

<Edit aus>
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 Oktober 2020, 09:09:47
Zitat von: Sunny am 08 Oktober 2020, 20:03:05
Ist "60_abstraction_time" <=> "Max.Entnahmedauer"?


command actual abstraction time
data 10

Würde bei mir passen.
Das weiß ich nicht

Zitat
Nicht getestet habe ich "set65Hint", "set59Hint" & "set54Hint"
Okay, dann lassen wir das erstmal so

Zitat
Habe gerade Werte von "43_actual_abstraction_time" als Reading "consumption_ActualAbstractionTime" erhaltzen.  ;D
Folgendes habe ich hinzugefügt:
attr JUDO_iSoft_test reading43Name consumption_ActualAbstractionTime
attr JUDO_iSoft_test reading43Regex "actual abstraction time","data":"(\d+)","group":"consumption"

??? Das war bei mir schon drin

Zitat
Noch mein "stateformat":
attr JUDO_iSoft_test stateFormat Status: status<br>\
Ventil: waterstop_State<br>\
...

Danke schön, das habe ich erstmal mit übernommen.

Die Software Version ist identisch zu meiner.

Zitat
und dann diese Readings (httpbody?) erhalten:
mit "showBody 1" wird der httpbody angezeigt, dort steht die Rückmeldung z.B.

httpbody
{"command":"water weekly","data":" 144 99 242 115 183 63 78","day":19,"group":"consumption","month":8,"msgnumber":"1","status":"ok","token":"498831248ffd0979caf87c5b7d703d4e69879238334633019a227435f03daed1","week":34,"year":2020,"wtuType":"i-soft plus","serial number":"96586","tftStarted":1600789504424}


Das Einlesen von "water monthly" schau ich mir gleich mal an. Das liegt an der starren Abfrage und der verschiedenen Anzahl von Tagen.
Ich hatte damals dort aufgehört, weil kaum Rückmeldungen kamen und bei mir die PV_Anlage vorging.

Wegen der vielen Änderungen werde ich dann später mal die gesamte RAW Definition im ersten Post ersetzen, damit wir wieder synchron laufen.

Gruß bis später
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 Oktober 2020, 11:56:06
Hallo Sunny,
für das logging der Werte ist DbLog zuständig


DbLogExclude .*                                   <<<<<<<< schließt alles aus
DbLogInclude consumption_WaterCurrent.*            <<<<<<    mit Komma separierte Liste der Werte, die Du loggen möchtest.

event-on-change-reading                           <<<<< mit Komma separierte Liste der Werte, damit nicht so viele Events kommen


Dann noch ein SVG aus der Datenbank und fertig.

EDIT:
Schau mal hier als Anregung Bilanz (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus#Energie_Bilanz)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 Oktober 2020, 12:07:07
Ich habe hier für water_monthly (https://forum.fhem.de/index.php/topic,114884.0.html) eine Regex Frage laufen
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 09 Oktober 2020, 12:46:00
Moin Christian,

Zitat von: ch.eick am 09 Oktober 2020, 11:56:06
Dann noch ein SVG aus der Datenbank und fertig.

Habe mal 2 Anhänge angehängt. (Von insgesamt 6 SVG)  ;)

Wenn das mit dem "water_monthly" ähnliche Werte wie:
consumption_WaterWeeklyByDay-1 370
consumption_WaterWeeklyByDay-2 263
consumption_WaterWeeklyByDay-3 112
consumption_WaterWeeklyByDay-4 209
consumption_WaterWeeklyByDay-5 54
consumption_WaterWeeklyByDay-6 -1
consumption_WaterWeeklyByDay-7 -1

ergibt.
Ist es glaube ich nicht wirklich Zielführend, da diese Daten ja schon per DBLog protokoliert werden können.

Mir ist gerade eine Idee für ein "DOIF" bzgl. des "aktuellen Tages Verbrauch eingefallen.
Werde mal versuchen, wenn "consumption_WaterWeeklyByDay-xyz" nicht -1 ist den vorhergigen Wert in den "H2O_werte_test_d" zu schreiben.

Mit "ideenreicheren" Gruß
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 Oktober 2020, 13:36:47
Zitat von: Sunny am 09 Oktober 2020, 13:26:09
um den aktuellen Tagesverbrauchswert in Liter zu protokolieren, habe ich:

Hast Du Dir mal die DbLog Variante angesehen?
Wenn Du die Werte loggst, kannst Du sie auch direkt Plotten oder auch aus der DB abfragen.
Der Umweg über das Dummy leuchtet mir noch nicht wirklich ein.

in der Bilanz, die ich als Beispiel geschickt habe werden die einzelnen Werte in die DB geschrieben und von dort, okay auch in einem Dummy :-) dann aufbereitet.

Ich schau es mir dann später auch mal an, sobald ich die water_monthly Abfrage geschafft habe.
Die tage 1-28 sind schon mal kein problem, nur die Variabilität für 29-31

attr JUDO_iSoft_test reading382Regex "command":"water monthly","data":" (-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "](-?[0-9.]+)[ "]
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 09 Oktober 2020, 14:04:48
Moin Christian,

Zitat von: ch.eick am 09 Oktober 2020, 13:36:47
Der Umweg über das Dummy leuchtet mir noch nicht wirklich ein.
Die Werte sende ich in den "Dummy", dieser schreibt dann die Werte in die DBlog.
(Okay, ist von hinten durch die Brust ins Auge... und viele Wege führen nach Rom)  :-[

Das DOIF für den aktuellen Wasserverbrauchswochenwert (schnell und dreckig)defmod H2O_wochen_werte_test_di DOIF ([+00:05]) \
\
(get JUDO_iSoft_test 37_water_weekly)\
\
## cmd_1\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-7] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-7]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-6]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-5]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-4]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
## cmd_9\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-6] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-6]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-5]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-4]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
\
## cmd_10\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-5] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-5]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-4]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
## cmd_11\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-4] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-4]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
## cmd_12\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-3] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
## cmd_13\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-2] > "-1")\
(set H2O_tages_werte_test_d Woche0 {([JUDO_iSoft_test:consumption_WaterWeeklyByDay-2]+[JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])})\
\
\
## cmd_14\
DOELSEIF\
([JUDO_iSoft_test:consumption_WaterWeeklyByDay-1] > "-1")\
(set H2O_tages_werte_test_d Woche0 [JUDO_iSoft_test:consumption_WaterWeeklyByDay-1])\

attr H2O_wochen_werte_test_di DbLogExclude .*
attr H2O_wochen_werte_test_di disable 0
attr H2O_wochen_werte_test_di do always
attr H2O_wochen_werte_test_di event-on-change-reading state,.*
attr H2O_wochen_werte_test_di group H2O_werte
attr H2O_wochen_werte_test_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_wochen_werte_test_di room H2O_test,Software
attr H2O_wochen_werte_test_di webCmd cmd_1
  läuft auch schon.  ;)

Leider habe ich auch noch keine elegante Idee, wie die Monatswerte genau erfasst werden können (Ohne 32 "cmd_'s")

Jute Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 Oktober 2020, 14:18:18
Zitat von: Sunny am 09 Oktober 2020, 14:04:48
Leider habe ich auch noch keine elegante Idee, wie die Monatswerte genau erfasst werden können (Ohne 32 "cmd_'s")
Hierzu gibt es nun einen Update im ersten Post...
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Damian am 10 Oktober 2020, 11:28:19
Als Anregung, so sieht meine Wasserzählung aus:

defmod Wasserzaehler DOIF { [00:02];;\
  set_Reading("tagesverbrauch",get_Reading("heute"),1);;\
  set_Reading("gesamt",get_Reading("total"));;\
  set_Reading("woche",get_Reading("heute")+get_Reading("woche"),$wday == 1 ? 1 : 0);;\
  set_Reading("monat",get_Reading("heute")+get_Reading("monat"),$mday == 1 ? 1 : 0);;\
  set_Reading("jahr",get_Reading("heute")+get_Reading("jahr"),$yday == 1 ? 1 : 0);;\
  set_Reading("heute",0);;\
  set_Reading("woche",0) if ($wday == 1);;\
  set_Reading("monat",0) if ($mday == 1);;\
  set_Reading("jahr",0) if ($yday == 1);;\
}\
reset {\
set_Reading ("zaehler",300383);;\
set_Reading ("total",0);;\
set_Reading ("tagesverbrauch",0);;\
set_Reading ("gesamt",300383);;\
set_Reading ("heute",0);;\
##set_Reading ("woche",0);;\
##set_Reading ("monat",0);;\
##set_Reading ("jahr",0);;\
}\
\
{\
  set_Reading("total",get_Reading("zaehler")+([ESPEasy_ESP_Easy_Wasserzaehler:Total]/2));;\
  set_Reading("heute",get_Reading("total")-get_Reading("gesamt",get_Reading("zaehler")),1);;\
}\

attr Wasserzaehler group Aktuell
attr Wasserzaehler room Wasser,DOIF
attr Wasserzaehler uiTable {package ui_Table;;\
$TC{0..3}="style='padding-left: 3px;;padding-right: 3px'"\
}\
\
bar([$SELF:heute],0,600,"heute",120,0,"l",undef,80)|\
bar([$SELF:woche]/1000,0,4,"Woche",120,0,"m²",undef,80)|\
bar([$SELF:monat]/1000,0,15,"Monat",120,0,"m²",undef,80)|\
bar([$SELF:jahr]/1000,0,100,"Jahr",120,0,"m²",undef,80)


PS

Mit Wasserzaehler:tagesverbrauch, Wasserzaehler:woche, Wasserzaehler:monat, Wasserzaehler:jahr lassen sich entsprechende Plots generieren
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Oktober 2020, 11:42:09
Zitat von: Damian am 10 Oktober 2020, 11:28:19
Als Anregung, so sieht meine Wasserzählung aus:
Vielen Dank für die Anregung.

Der iSoft liefert jedoch bereits fast alle Statistiken von hause aus, sodass diese dann direkt in die DbLog geschrieben werden können.
Die Abfrage der Statistiken im Device wird jedoch nur für einen schnellen Überblick benötigt.

Ich denke den ESPEasy_ESP_Easy_Wasserzaehler hast Du selber programiert :-)  und Dein uiTable sieht toll aus.
Aus Deinem DOIF kann ich jedoch den Triggermechanismus für die Abfrage des iSoft verwenden (Danke Dafür) .
Die Werte gehen dann direkt vom iSoft in die Datenbank und von dort in die Grafik.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 10 Oktober 2020, 15:27:03
Moin Christian,

ich finde es Klasse, wieviel Du inzwischen erarbeitet hast.
Daher bitte folgendes nicht missverstehen.
Zitat von: ch.eick am 10 Oktober 2020, 11:42:09
Der iSoft liefert jedoch bereits fast alle Statistiken von hause aus, sodass diese dann direkt in die DbLog geschrieben werden können.
Durch meine Versuche habe ich bemerkt, das die i-soft plus den Tag z.Z. erst um 01:00 Uhr (Winterzeit?) umstellt.
1. Kannst Du eventuell dieses auch noch einarbeiten?

Um die i-soft plus nicht unnötig "zu belasten" hole ich nur "consumption_WaterOfDaysByDay-xyz". (Werte von "consumption_WaterWeeklyByDay-xyz" sind ja identisch.)

Zitat von: ch.eick am 08 Oktober 2020, 16:33:01
Stop der Regeneration, wenn sie nicht nach n Minuten fertig ist.
Sollte nicht unkommentiert bleiben.
<OT an>
Schließlich greift "Mensch" hiermit direkt in die "Verordnung über die Qualität von Wasser für den menschlichen Gebrauch (Trinkwasserverordnung - TrinkwV)" ein.
Die "Automatische Regeneration" sorgt für den richtigen Umgang mit dem Trinkwasser.
Hierbei werden beide "Kammern" nacheinander gespült (ca. 22l landen dann im Abfluss) und anschliessend wieder mit Salzwasser gefühlt um die jeweilige gewünscht °dH "mischen" zukönnen. (STW: Stagnationswasser)
<OT aus>

2. Was ist der Unterschied bei "set JUDO_iSoft_test 56_valve" und "set JUDO_iSoft_test 57_valve" ? (Oder ist es identisch zu " CloseValve" / "OpenValve")

3. Entspricht "consumption_WaterTotalRaw" dem gesamten entnommen H²O und "consumption_WaterTotalSoft" nur dem H²O mit der eingestellten Wunschwasserhärte?

Über die "consumption_WaterYearByMonth-xyz" freue ich mich sehr.

4. Denkst es ich machbar den "consumption_WaterDailyThreeHour-xyz" noch auf die genaue Stunde herunterzubrechen?

Mit auslesenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Oktober 2020, 16:09:50
Zitat von: Sunny am 10 Oktober 2020, 15:27:03
Daher bitte folgendes nicht missverstehen.Durch meine Versuche habe ich bemerkt, das die i-soft plus den Tag z.Z. erst um 01:00 Uhr (Winterzeit?) umstellt.
1. Kannst Du eventuell dieses auch noch einarbeiten?
Was soll ich da machen? Steht die Winterzeit nicht auf Automatik?

Zitat
Um die i-soft plus nicht unnötig "zu belasten" hole ich nur "consumption_WaterOfDaysByDay-xyz". (Werte von "consumption_WaterWeeklyByDay-xyz" sind ja identisch.)
Ich habe gerade noch bei der Abfrage 36_water_daily , wo die drei Stunden Werte aufgelistet werden ein userreading mit der Summe eingetragen.
Nun müssten wir testen, wann der letzte Wert geschrieben wird und hätten dann ein reading für die Tages Summe, das dann 3 Stündlich in die Datenbank.
Bei den Momentanwerten sehe ich das mit der Belastung genauso.

Zitat
kommentar Regeneration
Ist jetzt im ersten Post enthalten

Zitat
2. Was ist der Unterschied bei "set JUDO_iSoft_test 56_valve" und "set JUDO_iSoft_test 57_valve" ? (Oder ist es identisch zu " CloseValve" / "OpenValve")
Das war ein Relikt und ist jetzt gelöscht/geändert

Zitat
3. Entspricht "consumption_WaterTotalRaw" dem gesamten entnommen H²O und "consumption_WaterTotalSoft" nur dem H²O mit der eingestellten Wunschwasserhärte?
Das sehe ich auch so, die Differenz müsste dann die Regeneration sein :-(

Zitat
Über die "consumption_WaterYearByMonth-xyz" freue ich mich sehr.
Das hat auch viel Hirnschmalz gekostet. Bitte lade mal die letzte Version, da ist noch viel Bewegung drin.

Zitat
4. Denkst es ich machbar den "consumption_WaterDailyThreeHour-xyz" noch auf die genaue Stunde herunterzubrechen?
Das geht nur, wenn man zyklisch den Momentanwert in die Datenbank schreibt und dann dort mit einer bereits vorhandenen SQL den Stundenwert aufsummiert.
Ich hatte das mal mit Stefan für die Temperaturdifferenzen im Heizungsspeicher für das WW gemacht.

Die iSoft liefert glaube ich keine Stundenwerte, oder hasst Du in der API was gesehen?

Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 10 Oktober 2020, 16:36:56
Moin Christian,
Zitat von: ch.eick am 10 Oktober 2020, 16:09:50
Was soll ich da machen? Steht die Winterzeit nicht auf Automatik?
Die i-Soft-plus ist bei mir mit einer FB verbunden, von der Sie die Zeit bezieht.
Warum diese Zeit anders ist als von meinem fhem-lapi, der auch die Zeit bezieht, kann ich Dir leider nicht beantworten.
(Vermutlich haben die Programmierer eine andere Zeitzone eingestellt)
Da ich mich mit HTTPMOD und regex nicht auskenne, dachte ich Dir könnte dazu etwas einfallen. 

Zitat von: ch.eick am 10 Oktober 2020, 16:09:50
Das sehe ich auch so, die Differenz müsste dann die Regeneration sein :-(
Nö, soviel ist es nicht. Habe da mal etwas vorbereitet:
ZitatFalls viel H2O abgefordert wird (z.B. mehrere Druckspüler, Pool befühlen) das H2O mit anderer Härte ins System gegeben.
Die eingestellte Härte kann nur bei höherer Außenhärte garantiert werden.
Bei mir bei 8°dH kann ich nur auf max 6°dH stellen für die Wunschwasserhärte.
Bei mir bei 9°dH kann ich nur auf max 7°dH stellen für die Wunschwasserhärte.

Hoffe das ich nicht noch öfters beim Kundendienst anrufen muss. Falls doch frage ich dort mal nach.

Zitat von: ch.eick am 10 Oktober 2020, 16:25:47
soll ich bei der API Nummerierung abweichen und z.B. start/stop open/close bei den set Befehlen mit einer Auswahl vorbelegen?
Das finde ich eigentlich übersichtlicher.
Jupp sehe ich genauso.
Werde jetz erstmal Deine letzte Version testen.

Mit testenden Grüßen
sunny

PS: Leider bin ich zu "blond" für die "httpbody's" . Schön das Du es eigebaut hast.
     Was ich Dir bisher noch nicht geschrieben habe, meine i-soft-plus ist meisten ca. 300km von mir entfernt. Daher bin ich mit dem "Testen" von "set" sehr vorsichtig.

<OT an>
Moin Damian,

Zitat von: Damian am 10 Oktober 2020, 11:28:19
Als Anregung, so sieht meine Wasserzählung aus:
besten Dank für die Vorlage.
<OT aus>
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 10 Oktober 2020, 17:05:29
Moin,
war wohl zu schnell...
Mir fällt auf, das "get xyz 58_valve_waterstop" kein Reading mit "open" erscheint.

Was ich nicht testen möchte ist "set xyz 59_abstraction_time" mit Deinen slider Werten. (max 10 min ist seeehr kurz)

Mit in Gedult übenden Grüßen
Karsten

PS: Vieleicht kannst Du einer Version-Nr. mit angeben. ;)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Oktober 2020, 17:30:51
Zitat von: Sunny am 10 Oktober 2020, 17:05:29
Moin,
war wohl zu schnell...
Mir fällt auf, das "get xyz 58_valve_waterstop" kein Reading mit "open" erscheint.
Ist korrigiert

Zitat
Was ich nicht testen möchte ist "set xyz 59_abstraction_time" mit Deinen slider Werten. (max 10 min ist seeehr kurz)
Da habe ich noch garnicht mit experimentiert und kenne die Bedeutung nicht. Das könntest Du mal bitte erklären, dann nehme ich es auf.
Ich denke es wird zeit für eine eigene Wiki Seite :-) mit Erläuterungen.

Zitat
PS: Vieleicht kannst Du einer Version-Nr. mit angeben. ;)
Ich schreibe im ersten Post immer oben die letzten Neuerungen mit Datum rein. Nur heute ging es mal schlag auf schlag, wenn schonmal jemand testet :-)

Des weiteren wollte ich Dich auch von einem umständlichen Pfad zurück locken, damit Du nicht den Umweg über das Dummy nehmen musst.
Als nächstes schaue ich mit das stateformat und auch SVGs aus der Datenbank an. Für heute ist aber Schluss.

Bitte schau Dir das Wasser Schedule mal an und gib dazu Rückmeldungen.

Ich fände es auch gut, wenn wir in diesem Thread die bereits erledigten Rückfragen einfach wieder rauslöschen, dann bleibt es übersichtlicher, wenn noch mehr User dazu kommen.
Wir zwei hatten ja recht viel geschrieben. Damian hat auch schon bereinigt ;-)

Gruß bis morgen
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Oktober 2020, 17:43:24
Zitat
Falls viel H2O abgefordert wird (z.B. mehrere Druckspüler, Pool befühlen) das H2O mit anderer Härte ins System gegeben.
Die eingestellte Härte kann nur bei höherer Außenhärte garantiert werden.
Bei mir bei 8°dH kann ich nur auf max 6°dH stellen für die Wunschwasserhärte.
Bei mir bei 9°dH kann ich nur auf max 7°dH stellen für die Wunschwasserhärte.
Bei uns kommt das Wasser mit 20°dH ins Haus, das hört man fast schon im Waschbecken klackern :-(
Ich habe es dann jetzt auf  6°dH stehen.

Auf jeden Fall habe ich etwas gelernt, Wird viel Wasser gezapft, kommt die Anlage nicht hinterher.
Ich dachte schon die Differenz wäre echt von der Regeneration. Bei mit wären das > 5000 Liter , aber der Pool wird mit 1000 Liter auch einmal pro Jahr gefüllt.
Da bin ich jetzt aber etwas beruhigter :-)

Toilette läuft bei mir über eine Selbstbauzisterne mit 7500 Litern Volumen ;-)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Oktober 2020, 17:47:41
Zitat
Was soll ich da machen? Steht die Winterzeit nicht auf Automatik?
Die i-Soft-plus ist bei mir mit einer FB verbunden, von der Sie die Zeit bezieht.
Warum diese Zeit anders ist als von meinem fhem-lapi, der auch die Zeit bezieht, kann ich Dir leider nicht beantworten.
(Vermutlich haben die Programmierer eine andere Zeitzone eingestellt)
Da ich mich mit HTTPMOD und regex nicht auskenne, dachte ich Dir könnte dazu etwas einfallen.

Das JUDO_iSoft Device fragt nur das Gerät ab und erstellt eventuell nicht vorhandene readings.

Kann man die Zeit korrekt setzen, damit es wieder stimmt?
Wenn Du etwas mehr API Analyse lieferst kann ich es mir anschauen. Momentan ist das für mich nicht fassbar, da ich keine APP verwende und nicht in den keller laufen möchte :-)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 10 Oktober 2020, 18:19:32
Moin Christian,

Zitat von: ch.eick am 10 Oktober 2020, 17:30:51
Da habe ich noch garnicht mit experimentiert und kenne die Bedeutung nicht. Das könntest Du mal bitte erklären, dann nehme ich es auf.
In der App ist es unter Leckageschutz/"Max. Entnahmedauer". Im starteformat hatte ich es "Leckage Zeit" genannt. Es ist die Zeit, wie lange maximal das H²O "laufen" darf, bevor der Leckageschutz schließt.
Zitat von: ch.eick am 10 Oktober 2020, 17:30:51
Ich schreibe im ersten Post immer oben die letzten Neuerungen mit Datum rein. Nur heute ging es mal schlag auf schlag, wenn schonmal jemand testet :-)
Was hälst Du von attr xyz comment Datum Uhrzeit
Das mit DBLog passt schon. ;) Wer die Daten übergibt ist doch Jacke wie Hose. ;D
Zitat von: ch.eick am 10 Oktober 2020, 17:47:41
Kann man die Zeit korrekt setzen, damit es wieder stimmt?
Nicht das ich wüsste, habe nur eine Feste Ip-Adr. und den NTP zugewiesen. Kann aber gerade nicht im Display nachsehen...

Zitat von: ch.eick am 10 Oktober 2020, 17:48:50
Ich habe einen direkten Mail Kontakt
Lass mich raten, Herr Herr.. 

Schönes WE
sunny

PS: Ich hoffe Dein Keller ist nicht 100 Etagen entfernt.

Gerade noch einmal im Pdf nach geschaut es sind ca. 25l pro Regeneration. Hatte ich mir wohl verkehrt beim Telefonat notiert.
Hier noch der Link zur "App"  https://www.myjudo.eu/ (https://www.myjudo.eu/) oder https://www.ju-control.app (https://www.ju-control.app) und zum PDF https://judo.eu/app/downloads/files/de/8203035/manuals/1702902_202007.pdf (https://judo.eu/app/downloads/files/de/8203035/manuals/1702902_202007.pdf)

Vielleich hilft Dir "get xyz 53_regeneration" settings_Regeneration 192, lso, lsu das es bei mir sind das gerade  "7"  sind.

Auch sollte evt. erwähnt werden das
Zitat von: ch.eick am 15 Juni 2020, 19:50:38

#### Diese readings sollten gesetzt werden, da sie von einigen Abfragen beim http get verwendet werden.
setstate JUDO_iSoft_test 2020-06-11 22:41:12 _DAY 1
setstate JUDO_iSoft_test 2020-06-11 18:10:39 _MONTH 06
setstate JUDO_iSoft_test 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft_test 2020-06-11 18:10:54 _YEAR 2020

es keine Redings von "consumption_WaterWeeklyByDay-xyz" gibt, wenn die Anlage nach dem 01.06.2020 installiert wurde.

Die Doif's, habe ich nocht nicht getestet. Auf dem Test fhem läuft kein DBLog.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 11 Oktober 2020, 10:31:45
Hallo Sunny,

jetzt habe ich auch mal Fragen :-)

- Mit welchem Wert kann ich die nachgefüllte Salzmenge angeben? Ist das 46_salt_quantity ?
- Was beeinflusst den die 59_abstraction_time ?

Wenn noch etwas fehlt brauche ich eine aktuelle Liste. Ich habe da etwas den Überblick verloren ;-)
Für die Zeiteinstellung habe ich in der API nichts gefunden.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 11 Oktober 2020, 10:48:13
Moinsen Christian;

Zitat von: ch.eick am 11 Oktober 2020, 10:31:45
- Mit welchem Wert kann ich die nachgefüllte Salzmenge angeben? Ist das 46_salt_quantity ?
Jupp in kg.

Zitat von: ch.eick am 11 Oktober 2020, 10:31:45?
- Was beeinflusst den die 59_abstraction_time ?
Zitat von: Sunny am 10 Oktober 2020, 18:19:32
In der App ist es unter Leckageschutz/"Max. Entnahmedauer". Im starteformat hatte ich es "Leckage Zeit" genannt. Es ist die Zeit, wie lange maximal das H²O "laufen" darf, bevor der Leckageschutz schließt. Was hälst Du von attr xyz comment Datum Uhrzeit
Unter "Einstellungen" => " Leckageschutz " => "Max. Entnahmedauer"  ;)
Habe gerade versucht den Slider mit "00:10,00:10,10:00" einzustellen. Leider nur "NaN".

Mit dankenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 11 Oktober 2020, 11:46:10
Moin Christian,

Deine letzte Versin läuft jetzt auf meinen Lapi.
Jetzt werde ich noch einiges anpassen auf z.Z. "consumption_WaterMonthlyByDay-xyz".

Zitat von: ch.eick am 11 Oktober 2020, 10:31:45
Wenn noch etwas fehlt brauche ich eine aktuelle Liste. Ich habe da etwas den Überblick verloren ;-)
1. Was ich persönlich schön finden würde, entwerder die Nomenklatur der App oder die kurze aus dem Wiki übernehmen.

2.
Zitat von: Sunny am 10 Oktober 2020, 18:19:32
Was hälst Du von attr xyz comment Datum Uhrzeit

3.
Zitat von: Sunny am 10 Oktober 2020, 18:19:32
Auch sollte evt. erwähnt werden das es keine Redings von "consumption_WaterWeeklyByDay-xyz" gibt, wenn die Anlage nach dem 01.06.2020 installiert wurde.
4.
Zitat von: Sunny am 10 Oktober 2020, 18:19:32
Vielleich hilft Dir "get xyz 53_regeneration" settings_Regeneration 192, lso, lsu das es bei mir sind das gerade  "7"  sind.
5. Zur H²O-Härte könnte "Mensch" noch erwähnen, das bei einer alten Kupferrohr-Installation unter 6°dH es evt. zu "Rohrbrüchen" kommen kann.
6. Die "Slider" an passen. Meine angepassten:
attr JUDO_iSoft_test set48Hint slider,6,1,10
attr JUDO_iSoft_test set61Hint slider,0,500,5000
attr JUDO_iSoft_test set63Hint slider,100,100,3000

7. Ein aktuelles Monats-Reading wäre schön. z.B. "consumption_water_monthly"

Mehr fällt mir z.Z. nicht ein.

Folgedes DOIF nutze ich z.Z.
defmod H2O_hole_werte_test_di DOIF ## cmd_1 \
([+00:01])\
\
(get JUDO_iSoft_test 35_water_current) \
(get JUDO_iSoft_test 41_water_of_days) \
(get JUDO_iSoft_test 50_natural_hardness) \
(get JUDO_iSoft_test 58_valve_waterstop) \
\
\
## cmd_2 \
DOELSEIF\
(\
[+[1]:29]\
and\
[+[1]:59]\
) \
\
(get JUDO_iSoft_test 40_water_total)\
(get JUDO_iSoft_test 42_water_average) \
(get JUDO_iSoft_test 43_actual_abstraction_time) \
(get JUDO_iSoft_test 44_actual_quantity) \
(get JUDO_iSoft_test 45_salt_quantity) \
(get JUDO_iSoft_test 47_salt_range) \
(get JUDO_iSoft_test 49_residual_hardness) \
(get JUDO_iSoft_test 60_abstraction_time) \
(get JUDO_iSoft_test 62_flow_rate) \
(get JUDO_iSoft_test 64_quantity) \
\
## cmd_3 hole Wert  um 23:59 Uhr \
DOELSEIF\
([23:59]) \
(get JUDO_iSoft_test 38_water_monthly) \
(get JUDO_iSoft_test 39_water_yearly) \
(get JUDO_iSoft_test 40_water_total) \
(get JUDO_iSoft_test 45_salt_quantity) \
(get JUDO_iSoft_test 47_salt_range) \
(get JUDO_iSoft_test 49_residual_hardness) \
(get JUDO_iSoft_test 50_natural_hardness)
attr H2O_hole_werte_test_di DbLogExclude .*
attr H2O_hole_werte_test_di disable 0
attr H2O_hole_werte_test_di do always
attr H2O_hole_werte_test_di event-on-change-reading state,.*
attr H2O_hole_werte_test_di group H2O_werte
attr H2O_hole_werte_test_di room H2O,Software
attr H2O_hole_werte_test_di wait 0,3,3,3,3:0,3,3,3,3,3,3,3,3,3:0,3,3,3,3,3
attr H2O_hole_werte_test_di webCmd cmd_1:cmd_2:cmd_3


Beste Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 11 Oktober 2020, 17:26:19
ZitatJetzt werde ich noch einiges anpassen auf z.Z. "consumption_WaterMonthlyByDay-xyz"
Meinst Du dreistellige Nummern, oder was ist hier nicht richtig?

Was ich persönlich schön finden würde, entweder die Nomenklatur der App oder die kurze aus dem Wiki übernehmen.
Ich hatte mich an die API gehalten, kannst Du bitte die attr Definitionen mit den anderen Namen liefern, dann könnte man drei Varianten anbieten.
Hier aber bitte nur die setXXName oder getXXName :-)

Versionsnummern wurde auch bei einem anderen Projekt schon angefragt, dass mache ich sobald ich etwas neu anfasse.

ZitatWas ich persönlich schön finden würde, entwerder die Nomenklatur der App oder die kurze aus dem Wiki übernehmen.
Wir haben doch die selbe Firmware??? Ist das in der neueren nicht mehr drin?

Zitatsettings_Regeneration 192, lso, lsu
Okay, meine Anlage läuft schon einige Jahre.
Was bedeutet da Iso und Isu ?

ZitatZur H²O-Härte könnte "Mensch" noch erwähnen, das bei einer alten Kupferrohr-Installation unter 6°dH es evt. zu "Rohrbrüchen" kommen kann.
Schreibe ich ins Wiki, ich habe Kunststoff mit Alu Kern

ZitatDie "Slider" an passen. Meine angepassten:
Habe ich bei mir übernommen und kommt mit dem nächsten Update in den ersten Post.

ZitatFolgedes DOIF nutze ich z.Z.
Das nehme ich dann auch mit in den ersten Post auf.
Da sieht man auch den Tageswechsel um 1:00 Uhr.
Kannst Du das noch etwas mit einem text versehen, damit eine erklärung dabei ist?
[+[1]:29] and [+[1]:59]
Warum zwei mal?

ZitatHabe gerade versucht den Slider mit "00:10,00:10,10:00" einzustellen. Leider nur "NaN".
Das kann der Slider nicht :-)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 11:40:05
Moin Chritian,

leider ist mir Heute aufgefallen, das seit Deiner letzten "Version", mir Heute von 0 Uhr bis 1 Uhr einige Daten fehlen.
Hängt wohl mit "getxyzMaxAge 86400" zusammen.

Zitat von: ch.eick am 11 Oktober 2020, 17:26:19
Meinst Du dreistellige Nummern, oder was ist hier nicht richtig?
Nein, nicht dreistellig. Hatte nur für meinen Dummy andere Namen verwendet.
Zitat von: ch.eick am 11 Oktober 2020, 17:26:19
Wir haben doch die selbe Firmware??? Ist das in der neueren nicht mehr drin?
Verstehe leider nicht was Du damit meinst.

Zitat von: ch.eick am 11 Oktober 2020, 17:26:19
Was bedeutet da Iso und Isu ?
Das weiss ich leider auch nicht.

Zitat von: ch.eick am 11 Oktober 2020, 17:26:19
Das nehme ich dann auch mit in den ersten Post auf.
Ist durch "getxyzMaxAge 86400" so leider nicht wirklich zugebrauchen.

<OT an>
Zitat
Mir geht es in erster Linie darum "Live-Daten" und den "Live-Zustand" zu erhalten und dieses in eine DB zu schreiben.
Daher werte ich z.Z. für den H²O-Verbrauch nur folgende Readings aus:"consumption_WaterCurrentRaw"
"consumption_WaterCurrentSoft"
"consumption_WaterTotalRaw"
"consumption_WaterTotalSoft"


Ich hatte versucht die Wiki-Version https://wiki.fhem.de/wiki/JUDO_iSoft_Plus (https://wiki.fhem.de/wiki/JUDO_iSoft_Plus) um Deine neuen "Readings" und "Set's" zu erweitern.
Dieses schein aber nicht so trival zu sein...
Vielleicht ist es der Grund, warum Du soviel verändert hast und nicht die Vorarbeit weiter geführt hast.
Da Du das Wiki anpassen möchtest, ist es dann eh nicht mehr zielführend.

Ich vermutte, das meine DOIF's und der Dummy eher OT sind.
Ich möchte Deinen Thread nicht kapern, schreibe mir doch bitte, was ich alles löschen soll.
<OT aus>

Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Oktober 2020, 12:45:52
Zitat
leider ist mir Heute aufgefallen, das seit Deiner letzten "Version", mir Heute von 0 Uhr bis 1 Uhr einige Daten fehlen.
Hängt wohl mit "getxyzMaxAge 86400" zusammen.
Da es sich um reine Statistiken des iSoft handelt hatte ich das MaxAge gesetzt. Die Werte lohnen sich nicht wirklich für die Datenbank und bedürfen, wie bei Dir noch eine Nachbearbeitung über ein Dummy.
Das kannst du ja bei Dir raus nehmen, wenn Du den Dummy behalten möchtest.

Zitat
Auch sollte evt. erwähnt werden das es keine Readings von "consumption_WaterWeeklyByDay-xyz" gibt, wenn die Anlage nach dem 01.06.2020 installiert wurde.
Das mit der Firmware bezog sich hierauf.  Was hat sich am 01.06.2020 geändert?

Die Wiki Seite des iSoft  Plus ist nicht von mir und ich hatte so starke Veränderungen, dass ich den bisherigen Benutzern nicht Ihre Dokumentation verändern wollte.
Wer das Device vom Wiki nimmt überschreiben sich die readings immer wieder, je nach dem welchen Aufruf man getätigt hat.
Meine Änderungen ermöglichen eine eindeutige Abfrage ohne Werte von vorherigen Abfragen zu überschreiben.

Ich habe heute Morgen das Logging mal mit eingebaut und das würde dann in der DB so aussehen (noch ohne Dein Timing, das sieht man dann erst morgen)

MySQL [fhem]> select TIMESTAMP,DEVICE,READING,VALUE FROM history WHERE DEVICE like 'JUDO_iSoft' and TIMESTAMP > '2020-10-12' ;
+---------------------+------------+-----------------------------------+-------+
| TIMESTAMP           | DEVICE     | READING                           | VALUE |
+---------------------+------------+-----------------------------------+-------+
| 2020-10-12 11:43:14 | JUDO_iSoft | consumption_SaltQuantityInPercent | 24    |
| 2020-10-12 11:43:17 | JUDO_iSoft | consumption_SaltRangeInWeeks      | 25    |
| 2020-10-12 11:14:18 | JUDO_iSoft | consumption_WaterCurrentRaw       | 16    |
| 2020-10-12 11:14:18 | JUDO_iSoft | consumption_WaterCurrentSoft      | 10    |
| 2020-10-12 11:42:21 | JUDO_iSoft | consumption_WaterDailySumme       | 116   |
| 2020-10-12 11:43:03 | JUDO_iSoft | consumption_WaterTotalRaw         | 25566 |
| 2020-10-12 11:43:03 | JUDO_iSoft | consumption_WaterTotalSoft        | 18674 |
+---------------------+------------+-----------------------------------+-------+

Es sollten jetzt alle Deine Werte hier auftauchen.
consumption_WaterDailySumme steigt dann im laufe des Tages, wie ein normaler Zähler immer weiter an. Der Maximalwert würde dann der Tagesverbrauch sein und
    das Abfragen der Statistiken im Normalbetrieb erübrigen.

consumption_WaterTotalRaw würde dann hoffentlich synchron zur Wasseruhr laufen.

Salz Vorrat und andere Werte, die man im Auge behalten sollte möchte ich dann auch in der DB haben

Bei Deinem Verfahren muss man in den Abfragen für weekly, monthly und yearly immer darauf achten, dass vorher die readings mit "_" richtig gesetzt werden!
Dies würde ich dann in einem weekly, monthly, yearly lauf implementieren um damit die entsprechenden Summen auszulesen. Das spart separate Zähler oder DB Summierungen.
- Hierbei kommt aus weekly, mit einer Summe, die ich noch einbaue, der Wochen Verbrauch.
- Die monthly Statistik liefert dann die Monatssumme
- Und die yearly Statistik dann die Jahressumme

Der Vorteil wäre, dass die Werte dann mit dem richtigen TIMESTAMP in der Datenbank stehen und direkt geplottet werden können.

Ich werde heute nochmals Updates mit Versionen :-) in den ersten Post stellen.

Wenn Du mir noch die Namensänderungen liefern könntest, wäre das dann auch schon mit dabei.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 13:49:18
Moinsen Christian,

Zitat von: ch.eick am 12 Oktober 2020, 12:45:52
Das mit der Firmware bezog sich hierauf.  Was hat sich am 01.06.2020 geändert?
Nicht die Firmware hat sich geändert, sondern durch:
Zitat von: ch.eick am 15 Juni 2020, 19:50:38

#### Diese readings sollten gesetzt werden, da sie von einigen Abfragen beim http get verwendet werden.
setstate JUDO_iSoft_test 2020-06-11 22:41:12 _DAY 1
setstate JUDO_iSoft_test 2020-06-11 18:10:39 _MONTH 06
setstate JUDO_iSoft_test 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft_test 2020-06-11 18:10:54 _YEAR 2020

wird es verhindert...

Zitat von: ch.eick am 12 Oktober 2020, 12:45:52
Der Vorteil wäre, dass die Werte dann mit dem richtigen TIMESTAMP in der Datenbank stehen und direkt geplottet werden können.
Was nützt ein richtiger Timestamp, wenn die Werte von der i-soft z.Z. zwischen 0 Uhr und 1 Uhr nicht der Realität entsprechen?

Zitat von: ch.eick am 12 Oktober 2020, 12:45:52
Wenn Du mir noch die Namensänderungen liefern könntest, wäre das dann auch schon mit dabei.
Welche Datein möchtest Du genau?

Mit fragenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Oktober 2020, 15:45:50
Zitat
Das mit der Firmware bezog sich hierauf.  Was hat sich am 01.06.2020 geändert?
Nicht die Firmware hat sich geändert, sondern durch:wird es verhindert...
#### Diese readings sollten gesetzt werden, da sie von einigen Abfragen beim http get verwendet werden.
setstate JUDO_iSoft_test 2020-06-11 22:41:12 _DAY 1
setstate JUDO_iSoft_test 2020-06-11 18:10:39 _MONTH 06
setstate JUDO_iSoft_test 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft_test 2020-06-11 18:10:54 _YEAR 2020

Okay, das sind nur Beispielwerte.
Das mit den Statistiken ist etwas tricky, wenn Du Dir die API Aufrufen mal genauer anschaust.
Vor dem get * Aufruf müssen diese readings passend gesetzt werden, wobei der _OFFSET besondere spaßig ist.
Wenn Du über die Statistiken Dein Dummy befüllen möchtest, musst Du vorher dafür sorgen, dass Du über die "_*" readings auch den richtigen Zeitraum triffst.

Das war der Grund, warum ich Dir davon abgeraten hatte.

Zitat
Der Vorteil wäre, dass die Werte dann mit dem richtigen TIMESTAMP in der Datenbank stehen und direkt geplottet werden können.
Was nützt ein richtiger Timestamp, wenn die Werte von der i-soft z.Z. zwischen 0 Uhr und 1 Uhr nicht der Realität entsprechen?
Dieses Phonemen sollten wir nochmal separat betrachten und dann auch noch bei iSoft einen Servicerequest aufmachen.
Das scheint ja ein Fehler mit der Sommer/Winter Zeit zu sein.


Ich aktualisiere später mal den ersten Post
- es werden jetzt daily, weekly, monthly, yearly Summen gebildet und das Problem mit der -1 ist auch behoben.
- Die Daily Summe wird mit "get <Device> 36_water_daily" gebildet und landet im DbLog
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 17:33:21
Moin Christian,

Zitat von: ch.eick am 12 Oktober 2020, 15:45:50
Okay, das sind nur Beispielwerte.
Das mit den Statistiken ist etwas tricky, wenn Du Dir die API Aufrufen mal genauer anschaust.
Ist es dann sinnvoll diese in Deiner Standard Version mit ein zutragen?

Zitat von: ch.eick am 12 Oktober 2020, 15:45:50
Dieses Phonemen sollten wir nochmal separat betrachten und dann auch noch bei iSoft einen Servicerequest aufmachen.
Das scheint ja ein Fehler mit der Sommer/Winter Zeit zu sein.
Habe dieses für mich gelöst, in dem ich den Verbrauch nur noch über water-current-xyz
water-total-xyz
in die DB schreibe. (z.Z. noch mit 1 Dummy und 4 DOIF's]
Dafür habe ich die Wiki-Variante mit einigen aus der Deiner Version angepasst.

Daraus sind die SVG's aus dem Anhang entstanden.

Mit juten Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Oktober 2020, 18:47:23
Hallo Sunny,
leider bist Du sehr schnell, aber hast mich zu Höchstleistungen getrieben :-)

1.) Die _* readings sind nur noch für den get Abruf mit Report im Namen.
     Zum Glück hat die API noch einiges mehr geliefert.
2.) Die get **_water_*  ohne _report liefern nun den jeweils aktuellen Zeitraum inklusive der aktuellen Summe
3.) Das MaxAge ist nun nurnoch bei den _report readings
4.) Auch die Jahres Statistik lässt sich für das laufende und für altere Jahre abfragen
5.) Mit 36_water_daily kannst Du die Tagessumme am Ende des Tages abfragen
Zitat
water-current-xyz
water-total-xyz
6.) Eventuell ist dann das 01:00 Uhr Problem auch nicht mehr relevant, das könntest Du eventuell mal testen. Bei mir wird eh nachts kein Wasser verbraucht;-)
ZitatWas nützt ein richtiger Timestamp, wenn die Werte von der i-soft z.Z. zwischen 0 Uhr und 1 Uhr nicht der Realität entsprechen?
ZitatDafür habe ich die Wiki-Variante mit einigen aus der Deiner Version angepasst.
Ist das Wiki von Dir gewesen? Ich würde da nichts reinschreiben, weil ich ja nicht weiß, wer es bisher verwendet.
Mein Gedanke war, meinen Ansatz komplett hinten dran zu packen, oder halt eine zweite Wiki Seite zu verlinken, da ja noch viel erklärt werden muss.

7.)
ZitatWelche Daten möchtest Du genau?
Diese Namen habe ich von der API <IP-Adresse>:8000 abgeleitet und Du hattest aus der Doku und der APP eventuell bessere Vorschläge.
Es können natürlich auch zwei Setts werden, je nach dem wie Du es magst.

attr JUDO_iSoft get22Name 22_software_version
attr JUDO_iSoft get23Name 23_hardware_version
attr JUDO_iSoft get28Name 28_serial_number
attr JUDO_iSoft get32Name 32_init_date
attr JUDO_iSoft get33Name 33_service_number
attr JUDO_iSoft get34Name 34_service_date
attr JUDO_iSoft get35Name 35_water_current
attr JUDO_iSoft get361Name 36_water_daily_report
attr JUDO_iSoft get36Name 36_water_daily
attr JUDO_iSoft get371Name 37_water_weekly_report
attr JUDO_iSoft get37Name 37_water_weekly
attr JUDO_iSoft get381Name 38_water_monthly_report
attr JUDO_iSoft get38Name 38_water_monthly
attr JUDO_iSoft get391Name 39_water_yearly_report
attr JUDO_iSoft get39Name 39_water_yearly
attr JUDO_iSoft get40Name 40_water_total
attr JUDO_iSoft get41Name 41_water_of_days_report
attr JUDO_iSoft get42Name 42_water_average
attr JUDO_iSoft get43Name 43_actual_abstraction_time
attr JUDO_iSoft get44Name 44_actual_quantity
attr JUDO_iSoft get45Name 45_salt_quantity
attr JUDO_iSoft get47Name 47_salt_range
attr JUDO_iSoft get49Name 49_residual_hardness
attr JUDO_iSoft get50Name 50_natural_hardness
attr JUDO_iSoft get53Name 53_info_regeneration
attr JUDO_iSoft get55Name 55_waterstop_standby
attr JUDO_iSoft get58Name 58_waterstop_valve
attr JUDO_iSoft get60Name 60_abstraction_time
attr JUDO_iSoft get62Name 62_waterstop_flow_rate
attr JUDO_iSoft get64Name 64_waterstop_quantity
attr JUDO_iSoft get66Name 66_waterstop_vacation

attr JUDO_iSoft set46Name 46_salt_quantity
attr JUDO_iSoft set48Name 48_residual_hardness
attr JUDO_iSoft set51Name 51_regeneration
attr JUDO_iSoft set54Name 54_waterstop_standby
attr JUDO_iSoft set56Name 56_waterstop_valve
attr JUDO_iSoft set59Name 59_abstraction_time
attr JUDO_iSoft set61Name 61_waterstop_flow_rate
attr JUDO_iSoft set63Name 63_waterstop_quantity
attr JUDO_iSoft set65Name 65_waterstop_vacation


Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 18:48:57
Moin Christian,

Zitat von: ch.eick am 12 Oktober 2020, 18:47:23
Ist das Wiki von Dir gewesen? Ich würde da nichts reinschreiben, weil ich ja nicht weiß, wer es bisher verwendet.
Leider nicht, sonst hätte ich nicht soviele Fragen...  :-[

Danke für Deine Arbeit.
Werde mir Deine neue Version mal bezeiten anschauen.

Mein Ansatz ist Daten sehr Zeitnah zu erhalten, da mir jemand einen Rohrbruch nicht gemeldet hatet und so sehr viel Trinwasser im Haus "verschwunden" ist.

Mit besten Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Oktober 2020, 19:16:05
Zitat von: Sunny am 12 Oktober 2020, 18:48:57
Mein Ansatz ist Daten sehr Zeitnah zu erhalten, da mir jemand einen Rohrbruch nicht gemeldet hatet und so sehr viel Trinwasser im Haus "verschwunden" ist.
Bei einem Haus mit mehreren Parteien würde ich auch versuchen den Wasserstop zu verwenden, wobei das recht schwierig sein kann.
Die Wahrscheinlichkeit des gleichzeitigen Wasserzapfens spielt da sicher manchmal einen Streich :-)

ZitatDafür habe ich die Wiki-Variante mit einigen aus der Deiner Version angepasst.
Ich konnte bisher nichts neues auf der Seite erkennen?
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 19:37:20
Moinsen,

hier mein erster Versuch.
defmod H2O_iSoft_plus HTTPMOD https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=4&token=%token% 0
attr H2O_iSoft_plus userattr get01CheckAllReadings:0,1 get01Name get01URL get02Name get02URL get03CheckAllReadings:0,1 get03Name get03URL get04CheckAllReadings:0,1 get04Name get04URL get05CheckAllReadings:0,1 get05Name get05URL get06CheckAllReadings:0,1 get06Name get06URL get07Name get07URL get08CheckAllReadings:0,1 get08Name get08URL get09CheckAllReadings:0,1 get09Name get09URL get10CheckAllReadings:0,1 get10Name get10URL get11CheckAllReadings:0,1 get11Name get11URL get12CheckAllReadings:0,1 get12Name get12URL get13Name get13URL get14Name get14URL get15Name get15URL get16CheckAllReadings:0,1 get16Name get16URL get17Name get17URL get18Name get18URL get19Name get19URL getHeader1 getHeader2 reading01JSON reading01Name reading01Regex reading021JSON reading021Name reading021Regex reading022JSON reading022Name reading022Regex reading02JSON reading031JSON reading031Name reading031Regex reading032JSON reading032Name reading032Regex reading03JSON reading03OExpr reading100JSON reading100Name reading101JSON reading101Name reading102JSON reading102Name reading103JSON reading103Name reading104JSON reading104Name reading105JSON reading105Name reading106JSON reading106Name reading107JSON reading107Name reading108JSON reading108Name reading109JSON reading109Name reading131JSON reading131Name reading131Regex reading132JSON reading132Name reading132Regex reading19JSON reading19Name reading19Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value replacement06Mode:reading,internal,text,expression,key replacement06Regex replacement06Value replacement07Mode:reading,internal,text,expression,key replacement07Regex replacement07Value replacement08Mode:reading,internal,text,expression,key replacement08Regex replacement08Value replacement09Mode:reading,internal,text,expression,key replacement09Regex replacement09Value replacement10Mode:reading,internal,text,expression,key replacement10Regex replacement10Value set01Name set01URL set02Name set02URL set03Name set03URL sid01ParseResponse:0,1 sid01URL sid02URL
attr H2O_iSoft_plus DbLogExclude .*
attr H2O_iSoft_plus DbLogInclude actual-abstrations-time,flow-rate,.*-hardness,quantity,salt-.*,water-average,water-current-.*,water-total-.*
attr H2O_iSoft_plus authRetries 2
attr H2O_iSoft_plus comment IMMER\
attr H2O_iSoft_plus replacement02Value <hier eigene IP Adresse im lokalen Netz eintragen>\
attr H2O_iSoft_plus replacement03Value <hier Kennwort eintragen>\
attr H2O_iSoft_plus replacement04Value <hier Benutzername eintragen>\
attr H2O_iSoft_plus replacement05Value <hier Seriennummer eintragen>\
\
Datum 2020.10.12 \
Zeit 13:30 Uhr \
1.Versuch der Anpassung der https://wiki.fhem.de/wiki/JUDO_iSoft_Plus Defintion,\
mit den Erweiterung von https://forum.fhem.de/index.php/topic,112147.msg1064693.html#msg1064693\
\
Folgende "get's" angepasst: \
WaterCurrent\
WaterTotal\
\
Folgende Readings angepasst:\
actual-abstrations-time\
water-current-raw \
water-current-soft\
water-total-raw\
water-total-soft\
\
Hinzugefügt get:\
ActualAbstractionTime\

attr H2O_iSoft_plus disable 0
attr H2O_iSoft_plus enableControlSet 1
attr H2O_iSoft_plus event-on-change-reading actual-abstrations-time,flow-rate,.*-hardness,quantity,salt-.*,water-average,water-current-.*,water-total-.*
attr H2O_iSoft_plus event-on-update-reading actual-abstrations-time,flow-rate,.*-hardness,quantity,salt-.*,water-average,water-current-.*,water-total-.*
attr H2O_iSoft_plus extractAllJSON 1
attr H2O_iSoft_plus get01CheckAllReadings 1
attr H2O_iSoft_plus get01Name SerialNumber
attr H2O_iSoft_plus get01URL https://%JUDO_ipaddress%:8124/?group=spare%20part&command=serial%20number&msgnumber=5&token=%token%
attr H2O_iSoft_plus get02Name WaterCurrent
attr H2O_iSoft_plus get02URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20current&msgnumber=1&token=%token%
attr H2O_iSoft_plus get03Name SaltRange
attr H2O_iSoft_plus get03URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20range&msgnumber=1&token=%token%
attr H2O_iSoft_plus get04Name SaltQuantity
attr H2O_iSoft_plus get04URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%
attr H2O_iSoft_plus get05Name ResidualHardness
attr H2O_iSoft_plus get05URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%
attr H2O_iSoft_plus get06Name NaturalHardness
attr H2O_iSoft_plus get06URL https://%JUDO_ipaddress%:8124/?group=info&command=natural%20hardness&msgnumber=1&token=%token%
attr H2O_iSoft_plus get07Name WaterStop
attr H2O_iSoft_plus get07URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%
attr H2O_iSoft_plus get08Name FlowRate
attr H2O_iSoft_plus get08URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%
attr H2O_iSoft_plus get09Name SoftwareVersion
attr H2O_iSoft_plus get09URL https://%JUDO_ipaddress%:8124/?group=version&command=software%20version&msgnumber=1&token=%token%
attr H2O_iSoft_plus get10Name HardwareVersion
attr H2O_iSoft_plus get10URL https://%JUDO_ipaddress%:8124/?group=version&command=hardware%20version&msgnumber=1&token=%token%
attr H2O_iSoft_plus get11Name InstallationDate
attr H2O_iSoft_plus get11URL https://%JUDO_ipaddress%:8124/?group=contract&command=init%20date&msgnumber=1&token=%token%
attr H2O_iSoft_plus get12Name ServiceDate
attr H2O_iSoft_plus get12URL https://%JUDO_ipaddress%:8124/?group=contract&command=service%20date&msgnumber=1&token=%token%
attr H2O_iSoft_plus get13Name WaterTotal
attr H2O_iSoft_plus get13URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20total&msgnumber=1&token=%token%
attr H2O_iSoft_plus get14Name WaterAverage
attr H2O_iSoft_plus get14URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20average&msgnumber=1&token=%token%
attr H2O_iSoft_plus get15Name Vacation
attr H2O_iSoft_plus get15URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%
attr H2O_iSoft_plus get16Name Quantity
attr H2O_iSoft_plus get16URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%
attr H2O_iSoft_plus get17Name WaterDaily
attr H2O_iSoft_plus get17URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%
attr H2O_iSoft_plus get18Name ValveState
attr H2O_iSoft_plus get18URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=4&&token=%token%
attr H2O_iSoft_plus get19Name ActualAbstractionTime
attr H2O_iSoft_plus get19URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%
attr H2O_iSoft_plus getHeader1 Content-Type: application/json
attr H2O_iSoft_plus getHeader2 Accept: */*
attr H2O_iSoft_plus group H2O_werte
attr H2O_iSoft_plus reAuthRegex (no token)|(not logged in)
attr H2O_iSoft_plus reading01JSON data
attr H2O_iSoft_plus reading01Name token
attr H2O_iSoft_plus reading01Regex "token":"([^"]+)"
attr H2O_iSoft_plus reading021JSON command
attr H2O_iSoft_plus reading021Name water-current-raw
attr H2O_iSoft_plus reading021Regex "command":"water current","data":".* (.*)","group":"consumption"
attr H2O_iSoft_plus reading022JSON command
attr H2O_iSoft_plus reading022Name water-current-soft
attr H2O_iSoft_plus reading022Regex "command":"water current","data":".* (.*)","group":"consumption"
attr H2O_iSoft_plus reading02JSON group
attr H2O_iSoft_plus reading03JSON command
attr H2O_iSoft_plus reading03OExpr $val =~ s/\s/-/;;;; $val;; readingsBulkUpdate($hash,$val,ReadingsVal("H2O_iSoft_plus","data",""))
attr H2O_iSoft_plus reading131JSON command
attr H2O_iSoft_plus reading131Name water-total-raw
attr H2O_iSoft_plus reading131Regex "command":"water total","data":" (\d+) \d+","group":"consumption"
attr H2O_iSoft_plus reading132JSON command
attr H2O_iSoft_plus reading132Name water-total-soft
attr H2O_iSoft_plus reading132Regex "command":"water total","data":" \d+ (\d+)","group":"consumption"
attr H2O_iSoft_plus reading19JSON command
attr H2O_iSoft_plus reading19Name actual-abstrations-time
attr H2O_iSoft_plus reading19Regex "command":"actual abstraction time","data":"(\d+)","group":"consumption"
attr H2O_iSoft_plus replacement01Mode reading
attr H2O_iSoft_plus replacement01Regex %token%
attr H2O_iSoft_plus replacement01Value token
attr H2O_iSoft_plus replacement02Mode text
attr H2O_iSoft_plus replacement02Regex %JUDO_ipaddress%
attr H2O_iSoft_plus replacement02Value <hier eigene IP Adresse im lokalen Netz eintragen>
attr H2O_iSoft_plus replacement03Mode text
attr H2O_iSoft_plus replacement03Regex %JUDO_password%
attr H2O_iSoft_plus replacement03Value <hier Kennwort eintragen>
attr H2O_iSoft_plus replacement04Mode text
attr H2O_iSoft_plus replacement04Regex %JUDO_username%
attr H2O_iSoft_plus replacement04Value <hier Benutzername eintragen>
attr H2O_iSoft_plus replacement05Mode text
attr H2O_iSoft_plus replacement05Regex %JUDO_serial%
attr H2O_iSoft_plus replacement05Value <hier Seriennummer eintragen>
attr H2O_iSoft_plus replacement06Mode reading
attr H2O_iSoft_plus replacement06Regex %_YEAR%
attr H2O_iSoft_plus replacement06Value _YEAR
attr H2O_iSoft_plus replacement07Mode reading
attr H2O_iSoft_plus replacement07Regex %_MONTH%
attr H2O_iSoft_plus replacement07Value _MONTH
attr H2O_iSoft_plus replacement08Mode reading
attr H2O_iSoft_plus replacement08Regex %_DAY%
attr H2O_iSoft_plus replacement08Value _DAY
attr H2O_iSoft_plus replacement09Mode reading
attr H2O_iSoft_plus replacement09Regex _OFFSET%
attr H2O_iSoft_plus replacement09Value _OFFSET
attr H2O_iSoft_plus replacement10Mode reading
attr H2O_iSoft_plus replacement10Regex %_OFFSET%
attr H2O_iSoft_plus replacement10Value _OFFSET
attr H2O_iSoft_plus room H2O
attr H2O_iSoft_plus set01Name CloseValve
attr H2O_iSoft_plus set01URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=close
attr H2O_iSoft_plus set02Name OpenValve
attr H2O_iSoft_plus set02URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=open
attr H2O_iSoft_plus set03Name residual-hardness
attr H2O_iSoft_plus set03URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%&parameter=$val
attr H2O_iSoft_plus showError 1
attr H2O_iSoft_plus sid01ParseResponse 1
attr H2O_iSoft_plus sid01URL https://%JUDO_ipaddress%:8124/?group=register&command=login&msgnumber=1&name=login&user=%JUDO_username%&password=%JUDO_password%&role=customer
attr H2O_iSoft_plus sid02URL https://%JUDO_ipaddress%:8124/?group=register&command=connect&msgnumber=6&token=%token%&parameter=i-soft%20plus&serial%20number=%JUDO_serial%
attr H2O_iSoft_plus stateFormat Ventil: valve<br>\
Leckage Liter/Std: flow-rate<br>\
Leckage max Liter: quantity<br>\
Leckage Zeit: actual-abstrations-time min<br>\
Salz Vorrat : salt-percent %<br>\
Salz Vorrat: salt-weeks Wochen<br>\
Salz Vorrat salt-range Tage<br>\
H2O Durchschnitt: water-average l<br>\
H2O Jetzt Raw water-current-raw l<br>\
H2O Jetzt Soft water-current-soft l<br>\
H2O Gesamt Raw water-total-raw l<br> \
H2O Gesamt Soft water-total-soft l<br>\
Aussen Haerte: natural-hardness dH<br>\
Eingestellte Haerte: residual-hardness dH
attr H2O_iSoft_plus timeout 5
attr H2O_iSoft_plus userReadings salt-weeks { int( (ReadingsVal("H2O_iSoft_plus","salt-range",0)/7))} , salt-percent { int( (ReadingsVal("H2O_iSoft_plus","salt-quantity",0)/50000)*100)}


<OT an>
Ich würde es "eleganter" finden, wenn "Mensch" sich nahe an die Vorarbeit hält.
(Ist kein Vorwurf., ohne Dich hätte ich jetzt nicht "meine fast Live Daten".  ;D)

Ich befasse mich erst seit dem 08.10.20 mit der fhem "Auswertung" der i-soft-plus und bin eher durch Zufall auf Deinen Thread gestossen.
Persönlich finde ich kurze "Readings" besser. (Jupp, kann nicht 10 Finger)

Eventuell würde es für aber Andere Übersichtlicher sein, wenn die Bezeichnug aus der App verwendet wird.
<OT aus>

Wenn Du möchtest kann ich auch noch den Dummy und die DOIF's posten.

Beste Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Oktober 2020, 21:56:35
Hey,

ZitatIch würde es "eleganter" finden, wenn "Mensch" sich nahe an die Vorarbeit hält.
Persönlich finde ich kurze "Readings" besser. (Jupp, kann nicht 10 Finger)
Das hatte ich auch schon mal so am Anfang, jedoch fehlt dann oft der Zusammenhang, weshalb ich die Gruppierungen noch zugefügt hatte.
Wie gesagt, ich habe nie die APP verwendet und kenne nur die API mit ihren Bezeichnungen.
Nach kürzester zeit weiß man nicht mehr was was ist, da man nur alle paar Monate in die Devices schaut.
Das Device sammelt ja nur, die Bedienung erfolgt dann wieder kompakter.

Deshalb wäre meine Idee jeweils ein Set mit den Namen anzubieten und jeder kann seine Vorliebe wählen.
Das ist dann eine mehrstufige Definition.

ZitatEventuell würde es für aber Andere Übersichtlicher sein, wenn die Bezeichnug aus der App verwendet wird.
Kannst du die auch noch liefern? Das würde dann mal Zeit auf mein Guthabenkonto buchen.

ZitatWenn Du möchtest kann ich auch noch den Dummy und die DOIF's posten.
Das kann nicht schaden.

Sobald hier wieder Ruhe einkehrt kümmere ich mich mal ums Wiki und dann wird dieser thread geschlossen und ein neuer für den weiteren Service aufgemacht.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Oktober 2020, 22:34:03
Moinsen Christian,

leider bin ich auch noch nicht ganz fertisch..
Der Dummydefmod H2O_werte_d dummy
attr H2O_werte_d DbLogExclude .*
attr H2O_werte_d DbLogInclude actual-abstrations-time,flow-rate,.*-hardness,quantity,salt-.*,water-average,water-current-.*,water-total-.*,Std.*,Tag.*,Woche.*,Monat.*,Jahr.*
attr H2O_werte_d event-on-change-reading actual-abstrations-time,flow-rate,.*-hardness,quantity,salt-.*,water-average,water-current-.*,water-total-.*,Std.*,Tag.*,Woche.*,Monat.*,Jahr.*,
attr H2O_werte_d group H2O_werte
attr H2O_werte_d readingList actual-abstrations-time flow-rate day month natural-hardness quantity residual-hardness salt-percent salt-quantity salt-range salt-weeks water-average water-current-raw water-current-soft water-total-raw water-total-soft year StdTr StdTs Std00r Std00s Std24r Std24s Std1r Std1s Std2r Std2s Std3r Std3s Std4r Std4s Std5r Std5s Std6r Std6s Std7r Std7s Std8r Std8s Std9r Std9s Std10r Std10s Std11r Std11s Std12r Std12s Std13r Std13s Std14r Std14s Std15r Std15s Std16r Std16s Std17r Std17s Std18r Std18s Std19r Std19s Std20r Std20s Std21r Std21s Std22r Std22s Std23r Std23s TagTr TagTs Tag0r Tag0s Tag1r Tag1s WocheTr WocheTs Woche0r Woche0s Woche1r Woche1s MonatTr MonatTs Monat0r Monat0s Monat00r Monat00s Monat1r Monat1s Monat2 Monat3 Monat4 Monat5 Monat6 Monat7 Monat8 Monat9 Monat10 Monat11 Monat12 Jahr0 Jahr2020 Jahr2021 GesamtTag0 GesamtWoche0 GesamtMonat0 GesamtJahr0
attr H2O_werte_d room H2O
attr H2O_werte_d stateFormat Aktuelle StdT l<br> \
Heute Raw Tag0r | Soft Tag0r l<br>\
Gestern  Raw Tag1r | Soft Tag1r l<br>\
Woche Raw Woche0r | Soft Woche0s l<br>\
Monat Raw Monat00r | Soft Monat00s l<br>\
Jahr Jahr0 l


Das DOIF holt die aktuellen Werte
defmod H2O_werte_hole_di DOIF ## cmd_1 \
([+00:01])\
##[+[0]:01]\
\
(get H2O_iSoft_plus NaturalHardness) \
(get H2O_iSoft_plus ValveState) \
(get H2O_iSoft_plus WaterCurrent) \
(get H2O_iSoft_plus WaterTotal)\
## (get H2O_iSoft_plus 41_water_of_days) \
\
## cmd_2 Tageswerte holen\
DOELSEIF\
(\
[+[1]:29]\
and\
[+[1]:59]\
) \
\
## (get H2O_iSoft_plus WaterTotal)\
(get H2O_iSoft_plus WaterAverage) \
(get H2O_iSoft_plus ActualAbstractionTime) \
(get H2O_iSoft_plus Quantity) \
(get H2O_iSoft_plus SaltQuantity) \
(get H2O_iSoft_plus SaltRange) \
(get H2O_iSoft_plus ResidualHardness) \
(get H2O_iSoft_plus FlowRate) \
\
\
## cmd_3 hole Wert 35_water_current um 23:59 Uhr \
DOELSEIF\
([00:00]) \
## (get H2O_iSoft_plus 38_water_monthly) \
## (get H2O_iSoft_plus 39_water_yearly) \
(get H2O_iSoft_plus WaterTotal) \
(get H2O_iSoft_plus SaltQuantity) \
(get H2O_iSoft_plus SaltRange) \
(get H2O_iSoft_plus ResidualHardness) \
(get H2O_iSoft_plus NaturalHardness)
attr H2O_werte_hole_di DbLogExclude .*
attr H2O_werte_hole_di comment ## (get JUDO_iSoft_test 53_regeneration)\
## (get JUDO_iSoft_test 36_water_daily) \
## (get JUDO_iSoft_test 41_water_of_days) \
## (get JUDO_iSoft_test 42_water_average) \
## (get JUDO_iSoft_test 53_regeneration) \
## (get JUDO_iSoft_test 37_water_weekly) \
## (get JUDO_iSoft_test 38_water_monthly)\
## (get JUDO_iSoft_test 39_water_yearly)
attr H2O_werte_hole_di disable 0
attr H2O_werte_hole_di do always
attr H2O_werte_hole_di event-on-change-reading state
attr H2O_werte_hole_di group H2O_werte_tools
attr H2O_werte_hole_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_werte_hole_di room H2O,Software
attr H2O_werte_hole_di verbose 0
attr H2O_werte_hole_di wait 0,5,5,5:0,5,5,5,5,5,5:0,5,5,5,5
attr H2O_werte_hole_di webCmd cmd_1:cmd_2:cmd_3


Dieses holt die "Standart Werte"
defmod H2O_werte_standart_di DOIF ## cmd_1\
([+00:01]) \
\
  (set H2O_werte_d actual-abstrations-time [H2O_iSoft_plus:actual-abstrations-time]) \
  (set H2O_werte_d flow-rate [H2O_iSoft_plus:flow-rate])\
  (set H2O_werte_d natural-hardness [H2O_iSoft_plus:natural-hardness])\
  (set H2O_werte_d quantity [H2O_iSoft_plus:quantity]) \
  (set H2O_werte_d residual-hardness [H2O_iSoft_plus:residual-hardness])\
  (set H2O_werte_d salt-percent [H2O_iSoft_plus:salt-percent]) \
  (set H2O_werte_d salt-range [H2O_iSoft_plus:salt-range])\
  (set H2O_werte_d salt-weeks [H2O_iSoft_plus:salt-weeks])\
  (set H2O_werte_d valve [H2O_iSoft_plus:valve]) \
  (set H2O_werte_d water-current-raw [H2O_iSoft_plus:water-current-raw]) \
  (set H2O_werte_d water-current-soft [H2O_iSoft_plus:water-current-soft]) \
  (set H2O_werte_d water-total-raw [H2O_iSoft_plus:water-total-raw]) \
  (set H2O_werte_d water-total-soft [H2O_iSoft_plus:water-total-soft]) \
  (set H2O_werte_d water-average [H2O_iSoft_plus:water-average]) \
\
## cmd_10\
DOELSEIF\
##([00:00]) ## Sommerzeit\
([00:00]) ## Winterzeit \
\
  (set H2O_werte_d day [H2O_iSoft_plus:day]) \
  (set H2O_werte_d month [H2O_iSoft_plus:month]) \
  (set H2O_werte_d year [H2O_iSoft_plus:year])\
\
(\
)\
\
## cmd_11\
DOELSE
attr H2O_werte_standart_di DbLogExclude .*
attr H2O_werte_standart_di disable 0
attr H2O_werte_standart_di do always
attr H2O_werte_standart_di event-on-change-reading state
attr H2O_werte_standart_di group H2O_werte_tools
attr H2O_werte_standart_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_werte_standart_di room H2O,Software
attr H2O_werte_standart_di verbose 0
attr H2O_werte_standart_di wait 0:1:1:1:1:1:1:1:1:1:1:1:1:0:3
attr H2O_werte_standart_di webCmd cmd_1


Tageswerte werden von diesem geschriebendefmod H2O_werte_tages_di DOIF ## cmd_1\
([+00:01]) \
\
  (set H2O_werte_d Tag0r {([H2O_iSoft_plus:water-total-raw]-[H2O_werte_d:TagTr])}) \
  (set H2O_werte_d Tag0s {([H2O_iSoft_plus:water-total-soft]-[H2O_werte_d:TagTs])}) \
\
## cmd_10\
DOELSEIF\
##([00:00]) ## Sommerzeit\
([00:00]) ## Winterzeit\
  (set H2O_werte_d Tag1r [H2O_werte_d:Tag0r])\
  (set H2O_werte_d Tag1s [H2O_werte_d:Tag0s])\
  (set H2O_werte_d TagTr [H2O_iSoft_plus:water-total-raw])\
  (set H2O_werte_d TagTs [H2O_iSoft_plus:water-total-soft])\
  (set H2O_werte_d Tag0r 0)\
  (set H2O_werte_d Tag0s 0)\
\
\
## cmd_11\
DOELSE
attr H2O_werte_tages_di DbLogExclude .*
attr H2O_werte_tages_di disable 0
attr H2O_werte_tages_di do always
attr H2O_werte_tages_di event-on-change-reading state
attr H2O_werte_tages_di group H2O_werte_tools
attr H2O_werte_tages_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_werte_tages_di room H2O,Software
attr H2O_werte_tages_di verbose 0
attr H2O_werte_tages_di wait 0:1:1:1:1:1:1:1:1:1:1:1:1:0:3
attr H2O_werte_tages_di webCmd cmd_1


Wochennwertedefmod H2O_werte_wochen_di DOIF ## cmd_1\
([+00:05]) \
\
  (set H2O_werte_d Woche0r {([H2O_iSoft_plus:water-total-raw]-[H2O_werte_d:WocheTr])}) \
  (set H2O_werte_d Woche0s {([H2O_iSoft_plus:water-total-soft]-[H2O_werte_d:WocheTs])}) \
\
## cmd_10\
DOELSEIF\
##([00:00]) ## Sommerzeit\
([00:00|Mo]) ## Winterzeit\
  (set H2O_werte_d Woche1r [H2O_werte_d:Woche0r])\
  (set H2O_werte_d Woche1s [H2O_werte_d:Woche0s])\
  (set H2O_werte_d WocheTr [H2O_iSoft_plus:water-total-raw])\
  (set H2O_werte_d WocheTs [H2O_iSoft_plus:water-total-soft])\
  (set H2O_werte_d Woche0r 0)\
  (set H2O_werte_d Woche0s 0)\
\
\
## cmd_11\
DOELSE
attr H2O_werte_wochen_di DbLogExclude .*
attr H2O_werte_wochen_di disable 0
attr H2O_werte_wochen_di do always
attr H2O_werte_wochen_di event-on-change-reading state
attr H2O_werte_wochen_di group H2O_werte_tools
attr H2O_werte_wochen_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_werte_wochen_di room H2O,Software
attr H2O_werte_wochen_di verbose 0
attr H2O_werte_wochen_di wait 0:1:1:1:1:1:1:1:1:1:1:1:1:0:3
attr H2O_werte_wochen_di webCmd cmd_1


Monatswerte
defmod H2O_werte_monats_di DOIF ## cmd_1\
([+00:05]) \
\
  (set H2O_werte_d Monat00r {([H2O_iSoft_plus:water-total-raw]-[H2O_werte_d:MonatTr])}) \
  (set H2O_werte_d Monat00s {([H2O_iSoft_plus:water-total-soft]-[H2O_werte_d:MonatTs])}) \
\
## cmd_10\
DOELSEIF\
( \
             ##[00:00] ## Sommerzeit\
[00:00|Mo] ## Winterzeit\
  and\
[H2O_werte_d:day] = "1"          ## prüft nach Monats Anfang\
)\
  (set H2O_werte_d Monat1r [H2O_werte_d:Monat00r])\
  (set H2O_werte_d Monat1s [H2O_werte_d:Monat00s])\
  (set H2O_werte_d MonatTr [H2O_iSoft_plus:water-total-raw])\
  (set H2O_werte_d MonatTs [H2O_iSoft_plus:water-total-raw])\
  (set H2O_werte_d Monat00r 0)\
  (set H2O_werte_d Monat00s 0)\
\
\
## cmd_11\
DOELSE
attr H2O_werte_monats_di DbLogExclude .*
attr H2O_werte_monats_di disable 0
attr H2O_werte_monats_di do always
attr H2O_werte_monats_di event-on-change-reading state
attr H2O_werte_monats_di group H2O_werte_tools
attr H2O_werte_monats_di readingList Tag0,Tag1,Woche0,Woche1,Monat0,Monat1,Jahr0,Jahr1,GesamtTag0,GesamtWoche0,GesamtMonat0,GesamtJahr0
attr H2O_werte_monats_di room H2O,Software
attr H2O_werte_monats_di verbose 0
attr H2O_werte_monats_di wait 0:1:1:1:1:1:1:1:1:1:1:1:1:0:3
attr H2O_werte_monats_di webCmd cmd_1


Ist noch nicht Fehlerfrei und zusammen gefasst.
Gerne liefere ich die App "Bezeichnungen" wenn ich wieder etwas mehr Zeit & weniger Probleme habe.

Jutes Nächtle
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 13 Oktober 2020, 08:09:01
Moin Sunny,

wegen des 01:00 Uhr Problems

2020-10-12 23:36:11 | JUDO_iSoft | consumption_WaterDailySumme       | 297   |
| 2020-10-12 23:38:11 | JUDO_iSoft | consumption_WaterDailySumme       | 299   |
| 2020-10-12 23:40:10 | JUDO_iSoft | consumption_WaterDailySumme       | 300   |
| 2020-10-13 00:04:10 | JUDO_iSoft | consumption_WaterDailySumme       | 0     |
| 2020-10-13 01:18:10 | JUDO_iSoft | consumption_WaterDailySumme       | 1     |
| 2020-10-13 01:20:10 | JUDO_iSoft | consumption_WaterDailySumme       | 4     |
| 2020-10-13 06:08:11 | JUDO_iSoft | consumption_WaterDailySumme       | 13    |
| 2020-10-13 06:14:10 | JUDO_iSoft | consumption_WaterDailySumme       | 14    |

Meine Tages Summe scheint sauber durch zu laufen.

Kannst Du mal zahlen liefern, wie es sich bei Dir zeigt, bevor Du da viel drumherum baust?

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 13 Oktober 2020, 10:32:23
Moinsen Christian,

Zitat von: ch.eick am 13 Oktober 2020, 08:09:01
Meine Tages Summe scheint sauber durch zu laufen.
Ich gehe davon aus das die Zahlen auch vor Deiner letzten Änderung vom Hersteller "sauber" durchliefen.

Zitat von: ch.eick am 13 Oktober 2020, 08:09:01
Kannst Du mal zahlen liefern, wie es sich bei Dir zeigt, bevor Du da viel drumherum baust?

Habe eine SVG erstellt, die die "consumption_WaterDailySumme" darstellt. (Thema Geduld).

Mit wartenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 13 Oktober 2020, 11:05:02
Moin Sunny

ZitatIch gehe davon aus das die Zahlen auch vor Deiner letzten Änderung vom Hersteller "sauber" durchliefen.
Im Mai wurde mir neine neue Steuerung eingebaut, um den FW Stand zu erreichen. Davor ging kein LAN Zugriff.
version_HardwareVersion 5.10
version_SoftwareVersion 02.09.h


Ein SVG aus der Datenbank hängt an.
Den Plotabriss von consumption_SaltRangeInWeeks habe ich gerade noch korrigiert.

## Zeitpunkt [00:01]
{addLog("LogDB", "JUDO_iSoft"      , "consumption_SaltRangeInWeeks")}
{addLog("LogDB", "JUDO_iSoft"      , "consumption_SaltQuantityInPercent")}


Deine DOIFs sind überwiegend für das Umkopieren in den Dummy, wie ich das so sehe.

Ich würde gerne mit Dir eine Wiki Seite für iSoft Plus variante zwei  erstellen.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 13 Oktober 2020, 20:45:07
Moinsen Christian.

Zitat von: ch.eick am 13 Oktober 2020, 11:05:02
Deine DOIFs sind überwiegend für das Umkopieren in den Dummy, wie ich das so sehe.
Jupp, damit ich "Namesunabhängig" bin.  ;D
Und z.Z. kann ich nur ein wenig mit Doif's Werte verändern. :-[

Zitat von: ch.eick am 13 Oktober 2020, 11:05:02
Ich würde gerne mit Dir eine Wiki Seite für iSoft Plus variante zwei  erstellen.
Erstmal Danke für die "Blumen". Rest gerne per PM.

Hier schon mal ein Anfang:
attr i_softplus stateFormat Leckageschutz: waterstop_State<br>\
Max_Wasserdurchfluss: waterstop_FlowRate<br>\
Max_Entnahmemenge waterstop_Quantity<br>\
Max_Entnahmedauer: consumption_ActualAbstractionTime min<br>\
Salzvorrat : consumption_SaltQuantityInPercent %<br>\
Reichweite Salzvorrat: consumption_SaltRangeInWeeks Wochen<br>\
Reichweite Salzvorrat ?salt-range? Tage<br>\
?Wasserdurchschnitt?: consumption_WaterAverage l<br>\
Wasserdurchfluss: Raw consumption_WaterCurrentRaw l<br>\
Wasserdurchfluss: consumption_ActualQuantity l<br>\
Wasserdurchfluss: Soft consumption_WaterCurrentSoft l<br>\
Gesamtwassermenge: Raw consumption_WaterTotalRaw l<br> \
Gesamtwassermenge: Soft consumption_WaterTotalRaw l<br>\
?Natuerlichehaerte?: info_NaturalHardness dH<br>\
Wunschwasserhaerte: settings_ResidualHardness dH<br>\
Urlaubsmodus: waterstop_Vacation <br>\
Sleepmodusdauer: waterstop_Standby


Mehr gerne Morgen.

Beste Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 14 Oktober 2020, 10:07:27
Moin,
ich habe gesehen, dass Du auch die SaltRangeInDays haben möchtest. Das wäre der original Wert, den ich zuvor in Wochen umgerechnet hatte.
Jetzt sind dann beide vorhanden.

consumption_SaltQuantityInPercent 24
consumption_SaltRangeInDays 179
consumption_SaltRangeInWeeks 25


Damit solltest Du Dein bestehendes Device ändern können.

deleteattr JUDO_iSoft reading47OExpr
attr JUDO_iSoft reading47Name consumption_SaltRangeInDays
attr JUDO_iSoft reading47Regex "command":"salt range","data":"(\d+)","group":"consumption"

attr JUDO_iSoft reading471Name consumption_SaltRangeInWeeks
attr JUDO_iSoft reading471OExpr int($val/7)
attr JUDO_iSoft reading471Regex "command":"salt range","data":"(\d+)","group":"consumption"


ZitatUnd z.Z. kann ich nur ein wenig mit Doif's Werte verändern. :-[
Es gibt wohl ein Log Proxy Device, das ich jedoch auch noch nicht verwendet habe, was aber genau das machen sollte.

Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 14 Oktober 2020, 11:01:06
Moin Christian,

kurze Rückmeldung.
Leider habe ich gestern zuviel an meinem Lapi verändert und dierekt davorkein Backup erstellt habe.

Unter anderem erhalte ich jetzt die "meine" total_raw und  total_soft immer Zeit versetzt.

Aber Heute habe ich gesehen, das Deine neue Version die "consumption_WaterDailySumme" sehr gut ist.  8)

Beste Grüße
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 14 Oktober 2020, 11:10:05
Zitat von: Sunny am 14 Oktober 2020, 11:01:06
Aber Heute habe ich gesehen, das Deine neue Version die "consumption_WaterDailySumme" sehr gut ist.  8)
weekly, monthly und yearly ist auch einen Blick wert und alles ohne einfluss von _* readings. Die ziehen nur noch bei der _report Varianten.
stolzguck ;-)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 14 Oktober 2020, 14:07:58
Moinsen Christian,

was hälst Du von folgendem ?
defmod i_softplus HTTPMOD https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=4&token=%token% 0
attr i_softplus userattr get22Name get22URL get23Name get23URL get28Name get28URL get32Name get32URL get33Name get33URL get34Name get34URL get35Name get35URL get36-10Name get36-11Name get36-12Name get36-5Name get36-6Name get36-7Name get36-8Name get36-9Name get361-10Name get361-11Name get361-12Name get361-5Name get361-6Name get361-7Name get361-8Name get361-9Name get361DeleteIfUnmatched get361MaxAge get361Name get361RegOpt get361Regex get361URL get36DeleteIfUnmatched get36Name get36RegOpt get36Regex get36URL get37-10Name get37-11Name get37-5Name get37-6Name get37-7Name get37-8Name get37-9Name get371-10Name get371-11Name get371-5Name get371-6Name get371-7Name get371-8Name get371-9Name get371AutoNumLen get371MaxAge get371Name get371RegOpt get371Regex get371URL get37AutoNumLen get37Name get37RegOpt get37Regex get37URL get38-10Name get38-11Name get38-12Name get38-13Name get38-14Name get38-15Name get38-16Name get38-17Name get38-18Name get38-19Name get38-20Name get38-21Name get38-22Name get38-23Name get38-24Name get38-25Name get38-26Name get38-27Name get38-28Name get38-29Name get38-30Name get38-31Name get38-32Name get38-33Name get38-34Name get38-35Name get38-5Name get38-6Name get38-7Name get38-8Name get38-9Name get381-10Name get381-11Name get381-12Name get381-13Name get381-14Name get381-15Name get381-16Name get381-17Name get381-18Name get381-19Name get381-20Name get381-21Name get381-22Name get381-23Name get381-24Name get381-25Name get381-26Name get381-27Name get381-28Name get381-29Name get381-30Name get381-31Name get381-32Name get381-33Name get381-34Name get381-35Name get381-5Name get381-6Name get381-7Name get381-8Name get381-9Name get381DeleteIfUnmatched get381MaxAge get381Name get381RegOpt get381Regex get381URL get38DeleteIfUnmatched get38Name get38RegOpt get38Regex get38URL get39-10Name get39-11Name get39-12Name get39-13Name get39-14Name get39-15Name get39-16Name get39-5Name get39-6Name get39-7Name get39-8Name get39-9Name get391-10Name get391-11Name get391-12Name get391-13Name get391-14Name get391-15Name get391-16Name get391-5Name get391-6Name get391-7Name get391-8Name get391-9Name get391AutoNumLen get391MaxAge get391Name get391RegOpt get391Regex get391URL get39AutoNumLen get39Name get39RegOpt get39Regex get39URL get40Name get40URL get41Name get41URL get42Name get42URL get43Name get43URL get44Name get44URL get45Name get45URL get47Name get47URL get49Name get49URL get50Name get50URL get53Name get53URL get55Name get55URL get58Name get58URL get60Name get60URL get62Name get62URL get64Name get64URL get66Name get66URL getHeader1 getHeader2 reading01Name reading01Regex reading22Name reading22Regex reading23Name reading23Regex reading28Name reading28Regex reading32Name reading32OExpr reading32Regex reading34Name reading34OExpr reading34Regex reading351Name reading351Regex reading352Name reading352Regex reading401Name reading401Regex reading402Name reading402Regex reading411Name reading411Regex reading412Name reading412Regex reading42Name reading42Regex reading43Name reading43Regex reading44Name reading44Regex reading45Name reading45OExpr reading45Regex reading471Name reading471OExpr reading471Regex reading47Name reading47Regex reading49Name reading49Regex reading50Name reading50Regex reading53Name reading53Regex reading55Name reading55Regex reading58Name reading58Regex reading62Name reading62Regex reading64Name reading64Regex reading66Name reading66Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value replacement06Mode:reading,internal,text,expression,key replacement06Regex replacement06Value replacement07Mode:reading,internal,text,expression,key replacement07Regex replacement07Value replacement08Mode:reading,internal,text,expression,key replacement08Regex replacement08Value replacement09Mode:reading,internal,text,expression,key replacement09Regex replacement09Value replacement10Mode:reading,internal,text,expression,key replacement10Regex replacement10Value set46Name set46URL set48Hint set48Name set48URL set51Hint set51Name set51NoArg:0,1 set51TextArg:0,1 set51URL set54Hint set54Name set54URL set56Hint set56Name set56NoArg:0,1 set56TextArg:0,1 set56URL set59Hint set59Name set59URL set61Hint set61Name set61URL set63Hint set63Name set63URL set65Hint set65Name set65URL sid01ParseResponse:0,1 sid01URL sid02URL
attr i_softplus authRetries 2
attr i_softplus comment Test 2020.10.14 14:00\
\
aus Version 2020.10.14 10:20\
Web API auf :8000\
https://blog.muwave.de/2017/06/monitoring-and-controlling-a-judo-i-soft-plus-water-softening-device-via-lan/\

attr i_softplus disable 0
attr i_softplus enableControlSet 0
attr i_softplus event-on-change-reading consumption_.*,waterstop_.*
attr i_softplus event-on-update-reading WaterDaily3Hour-01.*,report_WaterDaily3Hour-01.*,report_WaterDailyDate.*,WaterWeeklyByDay-01.*,report_WaterWeeklyByDay-01.*,report_WaterWeeklyDate.*,WaterMonthlyByDay-01.*,report_WaterMonthlyByDay-01.*,consumption_report_WaterMonthlyDate.*,WaterYearByMonth-01.*,report_WaterYearByMonth-01.*,consumption_report_WaterYearDate.*
attr i_softplus extractAllJSON 0
attr i_softplus get22Name info_SoftwareVersion
attr i_softplus get22URL https://%JUDO_ipaddress%:8124/?group=version&command=software%20version&msgnumber=1&token=%token%
attr i_softplus get23Name info_HardwareVersion
attr i_softplus get23URL https://%JUDO_ipaddress%:8124/?group=version&command=hardware%20version&msgnumber=1&token=%token%
attr i_softplus get28Name info_SerialNumber
attr i_softplus get28URL https://%JUDO_ipaddress%:8124/?group=spare%20part&command=serial%20number&msgnumber=5&token=%token%
attr i_softplus get32Name info_InitDate
attr i_softplus get32URL https://%JUDO_ipaddress%:8124/?group=contract&command=init%20date&msgnumber=1&token=%token%
attr i_softplus get33Name info_ServiceNumber
attr i_softplus get33URL https://%JUDO_ipaddress%:8124/?group=contract&command=ervice%20number&msgnumber=1&token=%token%
attr i_softplus get34Name info_ServiceDate
attr i_softplus get34URL https://%JUDO_ipaddress%:8124/?group=contract&command=service%20date&msgnumber=1&token=%token%
attr i_softplus get35Name Water_Current
attr i_softplus get35URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20current&msgnumber=1&token=%token%
attr i_softplus get36-10Name WaterDaily3Hour-06
attr i_softplus get36-11Name WaterDaily3Hour-07
attr i_softplus get36-12Name WaterDaily3Hour-08
attr i_softplus get36-5Name WaterDaily3Hour-01
attr i_softplus get36-6Name WaterDaily3Hour-02
attr i_softplus get36-7Name WaterDaily3Hour-03
attr i_softplus get36-8Name WaterDaily3Hour-04
attr i_softplus get36-9Name WaterDaily3Hour-05
attr i_softplus get361-10Name report_WaterDaily3Hour-06
attr i_softplus get361-11Name report_WaterDaily3Hour-07
attr i_softplus get361-12Name report_WaterDaily3Hour-08
attr i_softplus get361-5Name report_WaterDaily3Hour-01
attr i_softplus get361-6Name report_WaterDaily3Hour-02
attr i_softplus get361-7Name report_WaterDaily3Hour-03
attr i_softplus get361-8Name report_WaterDaily3Hour-04
attr i_softplus get361-9Name report_WaterDaily3Hour-05
attr i_softplus get361DeleteIfUnmatched 1
attr i_softplus get361MaxAge 86400
attr i_softplus get361Name Report_Water_Daily
attr i_softplus get361RegOpt g
attr i_softplus get361Regex [ ](-?[0-9]{1,4})
attr i_softplus get361URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr i_softplus get36DeleteIfUnmatched 1
attr i_softplus get36Name Water_Daily
attr i_softplus get36RegOpt g
attr i_softplus get36Regex [ ](-?[0-9]{1,4})
attr i_softplus get36URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%
attr i_softplus get37-10Name WaterWeeklyByDay-06
attr i_softplus get37-11Name WaterWeeklyByDay-07
attr i_softplus get37-5Name WaterWeeklyByDay-01
attr i_softplus get37-6Name WaterWeeklyByDay-02
attr i_softplus get37-7Name WaterWeeklyByDay-03
attr i_softplus get37-8Name WaterWeeklyByDay-04
attr i_softplus get37-9Name WaterWeeklyByDay-05
attr i_softplus get371-10Name report_WaterWeeklyByDay-06
attr i_softplus get371-11Name report_WaterWeeklyByDay-07
attr i_softplus get371-5Name report_WaterWeeklyByDay-01
attr i_softplus get371-6Name report_WaterWeeklyByDay-02
attr i_softplus get371-7Name report_WaterWeeklyByDay-03
attr i_softplus get371-8Name report_WaterWeeklyByDay-04
attr i_softplus get371-9Name report_WaterWeeklyByDay-05
attr i_softplus get371AutoNumLen 2
attr i_softplus get371MaxAge 86400
attr i_softplus get371Name Report_Water_Weekly
attr i_softplus get371RegOpt g
attr i_softplus get371Regex [ ](-?[0-9]{1,4})
attr i_softplus get371URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr i_softplus get37AutoNumLen 2
attr i_softplus get37Name Water_Weekly
attr i_softplus get37RegOpt g
attr i_softplus get37Regex [ ](-?[0-9]{1,4})
attr i_softplus get37URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%
attr i_softplus get38-10Name WaterMonthlyByDay-06
attr i_softplus get38-11Name WaterMonthlyByDay-07
attr i_softplus get38-12Name WaterMonthlyByDay-08
attr i_softplus get38-13Name WaterMonthlyByDay-09
attr i_softplus get38-14Name WaterMonthlyByDay-10
attr i_softplus get38-15Name WaterMonthlyByDay-11
attr i_softplus get38-16Name WaterMonthlyByDay-12
attr i_softplus get38-17Name WaterMonthlyByDay-13
attr i_softplus get38-18Name WaterMonthlyByDay-14
attr i_softplus get38-19Name WaterMonthlyByDay-15
attr i_softplus get38-20Name WaterMonthlyByDay-16
attr i_softplus get38-21Name WaterMonthlyByDay-17
attr i_softplus get38-22Name WaterMonthlyByDay-18
attr i_softplus get38-23Name WaterMonthlyByDay-19
attr i_softplus get38-24Name WaterMonthlyByDay-20
attr i_softplus get38-25Name WaterMonthlyByDay-21
attr i_softplus get38-26Name WaterMonthlyByDay-22
attr i_softplus get38-27Name WaterMonthlyByDay-23
attr i_softplus get38-28Name WaterMonthlyByDay-24
attr i_softplus get38-29Name WaterMonthlyByDay-25
attr i_softplus get38-30Name WaterMonthlyByDay-26
attr i_softplus get38-31Name WaterMonthlyByDay-27
attr i_softplus get38-32Name WaterMonthlyByDay-28
attr i_softplus get38-33Name WaterMonthlyByDay-29
attr i_softplus get38-34Name WaterMonthlyByDay-30
attr i_softplus get38-35Name WaterMonthlyByDay-31
attr i_softplus get38-5Name WaterMonthlyByDay-01
attr i_softplus get38-6Name WaterMonthlyByDay-02
attr i_softplus get38-7Name WaterMonthlyByDay-03
attr i_softplus get38-8Name WaterMonthlyByDay-04
attr i_softplus get38-9Name WaterMonthlyByDay-05
attr i_softplus get381-10Name report_WaterMonthlyByDay-06
attr i_softplus get381-11Name report_WaterMonthlyByDay-07
attr i_softplus get381-12Name report_WaterMonthlyByDay-08
attr i_softplus get381-13Name report_WaterMonthlyByDay-09
attr i_softplus get381-14Name report_WaterMonthlyByDay-10
attr i_softplus get381-15Name report_WaterMonthlyByDay-11
attr i_softplus get381-16Name report_WaterMonthlyByDay-12
attr i_softplus get381-17Name report_WaterMonthlyByDay-13
attr i_softplus get381-18Name report_WaterMonthlyByDay-14
attr i_softplus get381-19Name report_WaterMonthlyByDay-15
attr i_softplus get381-20Name report_WaterMonthlyByDay-16
attr i_softplus get381-21Name report_WaterMonthlyByDay-17
attr i_softplus get381-22Name report_WaterMonthlyByDay-18
attr i_softplus get381-23Name report_WaterMonthlyByDay-19
attr i_softplus get381-24Name report_WaterMonthlyByDay-20
attr i_softplus get381-25Name report_WaterMonthlyByDay-21
attr i_softplus get381-26Name report_WaterMonthlyByDay-22
attr i_softplus get381-27Name report_WaterMonthlyByDay-23
attr i_softplus get381-28Name report_WaterMonthlyByDay-24
attr i_softplus get381-29Name report_WaterMonthlyByDay-25
attr i_softplus get381-30Name report_WaterMonthlyByDay-26
attr i_softplus get381-31Name report_WaterMonthlyByDay-27
attr i_softplus get381-32Name report_WaterMonthlyByDay-28
attr i_softplus get381-33Name report_WaterMonthlyByDay-29
attr i_softplus get381-34Name report_WaterMonthlyByDay-30
attr i_softplus get381-35Name report_WaterMonthlyByDay-31
attr i_softplus get381-5Name report_WaterMonthlyByDay-01
attr i_softplus get381-6Name report_WaterMonthlyByDay-02
attr i_softplus get381-7Name report_WaterMonthlyByDay-03
attr i_softplus get381-8Name report_WaterMonthlyByDay-04
attr i_softplus get381-9Name report_WaterMonthlyByDay-05
attr i_softplus get381DeleteIfUnmatched 1
attr i_softplus get381MaxAge 86400
attr i_softplus get381Name Report_WaterMonthly
attr i_softplus get381RegOpt g
attr i_softplus get381Regex [ ](-?[0-9]{1,4})
attr i_softplus get381URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%
attr i_softplus get38DeleteIfUnmatched 1
attr i_softplus get38Name Water_Monthly
attr i_softplus get38RegOpt g
attr i_softplus get38Regex [ ](-?[0-9]{1,4})
attr i_softplus get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%
attr i_softplus get39-10Name WaterYearByMonth-06
attr i_softplus get39-11Name WaterYearByMonth-07
attr i_softplus get39-12Name WaterYearByMonth-08
attr i_softplus get39-13Name WaterYearByMonth-09
attr i_softplus get39-14Name WaterYearByMonth-10
attr i_softplus get39-15Name WaterYearByMonth-11
attr i_softplus get39-16Name WaterYearByMonth-12
attr i_softplus get39-5Name WaterYearByMonth-01
attr i_softplus get39-6Name WaterYearByMonth-02
attr i_softplus get39-7Name WaterYearByMonth-03
attr i_softplus get39-8Name WaterYearByMonth-04
attr i_softplus get39-9Name WaterYearByMonth-05
attr i_softplus get391-10Name report_WaterYearByMonth-06
attr i_softplus get391-11Name report_WaterYearByMonth-07
attr i_softplus get391-12Name report_WaterYearByMonth-08
attr i_softplus get391-13Name report_WaterYearByMonth-09
attr i_softplus get391-14Name report_WaterYearByMonth-10
attr i_softplus get391-15Name report_WaterYearByMonth-11
attr i_softplus get391-16Name report_WaterYearByMonth-12
attr i_softplus get391-5Name report_WaterYearByMonth-01
attr i_softplus get391-6Name report_WaterYearByMonth-02
attr i_softplus get391-7Name report_WaterYearByMonth-03
attr i_softplus get391-8Name report_WaterYearByMonth-04
attr i_softplus get391-9Name report_WaterYearByMonth-05
attr i_softplus get391AutoNumLen 2
attr i_softplus get391MaxAge 86400
attr i_softplus get391Name Report_WaterYearly
attr i_softplus get391RegOpt g
attr i_softplus get391Regex [ ](-?[0-9]{1,4})
attr i_softplus get391URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%&year=%_YEAR%
attr i_softplus get39AutoNumLen 2
attr i_softplus get39Name Water_Yearly
attr i_softplus get39RegOpt g
attr i_softplus get39Regex [ ](-?[0-9]{1,4})
attr i_softplus get39URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%
attr i_softplus get40Name Water_Total
attr i_softplus get40URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20total&msgnumber=1&token=%token%
attr i_softplus get41Name Report_WaterOfDays
attr i_softplus get41URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%&offset=%_OFFSET%
attr i_softplus get42Name Water_Average
attr i_softplus get42URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20average&msgnumber=1&token=%token%
attr i_softplus get43Name Waterstop_ActualAbstractionTime
attr i_softplus get43URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%
attr i_softplus get44Name Waterstop_ActualQuantity
attr i_softplus get44URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20quantity&msgnumber=1&token=%token%
attr i_softplus get45Name Salt_Quantity
attr i_softplus get45URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%
attr i_softplus get47Name Salt_Range
attr i_softplus get47URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20range&msgnumber=1&token=%token%
attr i_softplus get49Name Hardness_Residual
attr i_softplus get49URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%
attr i_softplus get50Name Hardness_Natural
attr i_softplus get50URL https://%JUDO_ipaddress%:8124/?group=info&command=natural%20hardness&msgnumber=1&token=%token%
attr i_softplus get53Name info_Regerneration
attr i_softplus get53URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%
attr i_softplus get55Name Waterstop_Standby
attr i_softplus get55URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%
attr i_softplus get58Name Waterstop_Valve
attr i_softplus get58URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%
attr i_softplus get60Name Waterstop_Abstraction_Time
attr i_softplus get60URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%
attr i_softplus get62Name Waterstop_Flow_Rate
attr i_softplus get62URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%
attr i_softplus get64Name Waterstop_Quantity
attr i_softplus get64URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%
attr i_softplus get66Name Waterstop_Vacation
attr i_softplus get66URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%
attr i_softplus getHeader1 Content-Type: application/json
attr i_softplus getHeader2 Accept: */*
attr i_softplus group i_softplus
attr i_softplus reAuthRegex (no token)|(not logged in)
attr i_softplus reading01Name token
attr i_softplus reading01Regex "token":"([^"]+)"
attr i_softplus reading22Name info_software_version
attr i_softplus reading22Regex "software version","data":"(.*)","group":"version"
attr i_softplus reading23Name info_hardware_version
attr i_softplus reading23Regex "hardware version","data":"(.*)","group":"version"
attr i_softplus reading28Name info_serial_number
attr i_softplus reading28Regex "serial number","data":"(.*)","group":"spare part"
attr i_softplus reading32Name info_init_ate
attr i_softplus reading32OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr i_softplus reading32Regex "init date","data":"(.*)","group":"contract"
attr i_softplus reading34Name info_service_date
attr i_softplus reading34OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr i_softplus reading34Regex "service date","data":"(.*)","group":"contract"
attr i_softplus reading351Name water_current_raw
attr i_softplus reading351Regex "command":"water current","data":"(.*) .*","group":"consumption"
attr i_softplus reading352Name water_current_soft
attr i_softplus reading352Regex "command":"water current","data":".* (.*)","group":"consumption"
attr i_softplus reading401Name water_total_raw
attr i_softplus reading401Regex "command":"water total","data":" (\d+) \d+","group":"consumption"
attr i_softplus reading402Name water_total_soft
attr i_softplus reading402Regex "command":"water total","data":" \d+ (\d+)","group":"consumption"
attr i_softplus reading411Name water_of_days_date
attr i_softplus reading411Regex "command":"water weekly.*"day":(\d+),"group".*"month":(\d+),"msg.*"offset":"(-?\d+)","status.*"week":(\d+),"year":(\d+),"wtu
attr i_softplus reading412Name water_of_days_day
attr i_softplus reading412Regex "command":"water weekly","data":" (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+).*offset
attr i_softplus reading42Name water_average
attr i_softplus reading42Regex "command":"water average","data":"(\d+)","group":"consumption"
attr i_softplus reading43Name waterstop_actual_abstraction_time
attr i_softplus reading43Regex "command":"actual abstraction time","data":"(\d+)","group":"consumption"
attr i_softplus reading44Name waterstop_quantity
attr i_softplus reading44Regex "command":"actual quantity","data":"(\d+)","group":"consumption"
attr i_softplus reading45Name salt_percent
attr i_softplus reading45OExpr int($val/50000*100)
attr i_softplus reading45Regex "command":"salt quantity","data":"(\d+)","group":"consumption"
attr i_softplus reading471Name salt_weeks
attr i_softplus reading471OExpr int($val/7)
attr i_softplus reading471Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr i_softplus reading47Name salt_days
attr i_softplus reading47Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr i_softplus reading49Name hardness-residual
attr i_softplus reading49Regex "residual hardness","data":"(\d+)","group":"settings"
attr i_softplus reading50Name hardness_natural
attr i_softplus reading50Regex "natural hardness","data":"(\d+)","group":"info"
attr i_softplus reading53Name regerneration
attr i_softplus reading53Regex "command":"regeneration","data":"(.*)","group":"settings"
attr i_softplus reading55Name waterstop_standby
attr i_softplus reading55Regex "command":"standby","data":"(\d+)","group":"waterstop"
attr i_softplus reading58Name waterstop_state
attr i_softplus reading58Regex "command":"valve","data":"(\w+)","group":"waterstop"
attr i_softplus reading62Name waterstop_flow-rate
attr i_softplus reading62Regex "flow rate","data":"(\d+)","group":"waterstop"
attr i_softplus reading64Name waterstop_quantity
attr i_softplus reading64Regex "command":"quantity","data":"(\d+)","group":"waterstop"
attr i_softplus reading66Name waterstop_vacation
attr i_softplus reading66Regex "command":"vacation","data":"(.*)","group":"waterstop"
attr i_softplus replacement01Mode reading
attr i_softplus replacement01Regex %token%
attr i_softplus replacement01Value token
attr i_softplus replacement02Mode text
attr i_softplus replacement02Regex %JUDO_ipaddress%
attr i_softplus replacement02Value <hier eigene IP Adresse im lokalen Netz eintragen>
attr i_softplus replacement03Mode text
attr i_softplus replacement03Regex %JUDO_password%
attr i_softplus replacement03Value <hier Kennwort eintragen>
attr i_softplus replacement04Mode text
attr i_softplus replacement04Regex %JUDO_username%
attr i_softplus replacement04Value <hier Benutzername eintragen>
attr i_softplus replacement05Mode text
attr i_softplus replacement05Regex %JUDO_serial%
attr i_softplus replacement05Value <hier Seriennummer eintragen>
attr i_softplus replacement06Mode reading
attr i_softplus replacement06Regex %_YEAR%
attr i_softplus replacement06Value _YEAR
attr i_softplus replacement07Mode reading
attr i_softplus replacement07Regex %_MONTH%
attr i_softplus replacement07Value _MONTH
attr i_softplus replacement08Mode reading
attr i_softplus replacement08Regex %_DAY%
attr i_softplus replacement08Value _DAY
attr i_softplus replacement09Mode reading
attr i_softplus replacement09Regex %_OFFSET%
attr i_softplus replacement09Value _OFFSET
attr i_softplus replacement10Mode reading
attr i_softplus replacement10Regex %_OFFSET%
attr i_softplus replacement10Value _OFFSET
attr i_softplus room Wasser
attr i_softplus set46Name Salt_Quantity
attr i_softplus set46URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set48Hint slider,6,1,10
attr i_softplus set48Name ResidualHardness
attr i_softplus set48URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set51Hint start,stop
attr i_softplus set51Name Regerneration
attr i_softplus set51NoArg 1
attr i_softplus set51TextArg 1
attr i_softplus set51URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set54Hint 0,1
attr i_softplus set54Name Waterstop_Standby
attr i_softplus set54URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set56Hint close,open
attr i_softplus set56Name Waterstop_Valve
attr i_softplus set56NoArg 1
attr i_softplus set56TextArg 1
attr i_softplus set56URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set59Hint slider,1,1,31
attr i_softplus set59Name Waterstop_AbstractionTime
attr i_softplus set59URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set61Hint slider,0,500,5000
attr i_softplus set61Name Waterstop_FlowRate
attr i_softplus set61URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set63Hint slider,100,100,3000
attr i_softplus set63Name Waterstop_Quantity
attr i_softplus set63URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%&parameter=$val
attr i_softplus set65Hint slider,0,1,31
attr i_softplus set65Name Waterstop_Vacation
attr i_softplus set65URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%&parameter=$val
attr i_softplus showBody 1
attr i_softplus showError 1
attr i_softplus sid01ParseResponse 1
attr i_softplus sid01URL https://%JUDO_ipaddress%:8124/?group=register&command=login&msgnumber=1&name=login&user=%JUDO_username%&password=%JUDO_password%&role=customer
attr i_softplus sid02URL https://%JUDO_ipaddress%:8124/?group=register&command=connect&msgnumber=6&token=%token%&parameter=i-soft%20plus&serial%20number=%JUDO_serial%
attr i_softplus stateFormat Leckageschutz: waterstop_state<br>\
Max_Wasserdurchfluss: waterstop_flow-rate<br>\
Max_Entnahmemenge: waterstop_quantity<br>\
Max_Entnahmedauer: waterstop_actual_abstraction_time min<br>\
Salzvorrat: salt_percent %<br>\
RSalzvorrat: salt_weeks Wochen<br>\
Salzvorrat: salt_days TAge<br>\
Wasserdurchschnitt: water_average l<br>\
Wasserdurchfluss: Raw water_current_raw l<br>\
Wasserdurchfluss: waterstop_quantity l<br>\
Wasserdurchfluss: Soft water_current_soft l<br>\
Gesamtwassermenge: Raw water_total_raw l<br> \
Gesamtwassermenge: Soft water_total_soft l<br>\
Natuerlichehaerte: hardness_natural dH<br>\
Wunschwasserhaerte: hardess_residual dH<br>\
Urlaubsmodus: waterstop_vacation <br>\
Sleepmodusdauer: waterstop_standby
attr i_softplus timeout 15
attr i_softplus userReadings waterDailySumme:WaterDaily3Hour-01.* {my $NAME="i_softplus" ;; my $s=0 ;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","WaterDaily3Hour-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_daily-.*");; $s},\
\
report_WaterDailyDate:report_WaterDaily3Hour-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
report_WaterDailySumme:report_WaterDailyDate.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","report_WaterDaily3Hour-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","report_WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_daily_report-.*");; $s},\
\
WaterWeeklySumme:WaterWeeklyByDay-01.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","WaterWeeklyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_weekly-.*");; $s},\
\
report_WaterWeeklyDate:report_WaterWeeklyByDay-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
report_WaterWeeklySumme:report_WaterWeeklyDate.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","report_WaterWeeklyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","report_WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_weekly_report-.*");; $s},\
\
consumption_WaterMonthlySumme:WaterMonthlyByDay-01.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","WaterMonthlyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_monthly-.*");; $s},\
\
consumption_report_WaterMonthlyDate:report_WaterMonthlyByDay-01.* {my $date=sprintf("%4d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0) );; $date },\
\
consumption_report_WaterMonthlySumme:consumption_report_WaterMonthlyDate.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","report_WaterMonthlyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","report_WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_monthly_report-.*");; $s},\
\
consumption_WaterYearSumme:WaterYearByMonth-01.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","WaterYearByMonth-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_yearly-.*");; $s},\
\
consumption_report_WaterYearDate:report_WaterYearByMonth-01.* {my $date=sprintf("%4d",ReadingsVal("$NAME","_YEAR",0) );; $date },\
\
consumption_report_WaterYearSumme:consumption_report_WaterYearDate.* {my $NAME="i_softplus" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","report_WaterYearByMonth-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","report_WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; fhem("deletereading $NAME water_yearly_report-.*");; $s},\
\
\water_of_days_date:water_of_days_date-1.* {my $date=sprintf("%4d-%02d-%02d Week %02d used Offset %d",ReadingsVal("$NAME","water_of_days_date-5",0),ReadingsVal("$NAME","water_of_days_date-2",0),ReadingsVal("$NAME","water_of_days_date-1",0),ReadingsVal("$NAME","water_of_days_date-4",0),ReadingsVal("$NAME","_OFFSET",0) );;;; fhem("deletereading $NAME  water_of_days_date-.*");;;; $date }\
\

attr i_softplus verbose 0



Ist noch nicht komplett...

Mit gespannten Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 14 Oktober 2020, 15:00:48
Ich habe mal die "Name" Definition herausgefiltert, über die wir jetzt reden.
Kleine Rechtschreibung habe ich korrigiert und dann alles mal in Gruppen sortiert.
Die Abkehr von den API Nummern ist für den normalen Anwender sicher besser, das finde ich gut, man sieht es ja in den Attributen.


## get Befehle
attr i_softplus get22Name Info_SoftwareVersion
attr i_softplus get23Name Info_HardwareVersion
attr i_softplus get28Name Info_SerialNumber
attr i_softplus get32Name Info_InitDate
attr i_softplus get33Name Info_ServiceNumber
attr i_softplus get34Name Info_ServiceDate

attr i_softplus get43Name Water_Actual_Abstraction_Time
attr i_softplus get42Name Water_Average
attr i_softplus get35Name Water_Current
attr i_softplus get36Name Water_Daily
attr i_softplus get38Name Water_Monthly
attr i_softplus get40Name Water_Total
attr i_softplus get37Name Water_Weekly
attr i_softplus get39Name Water_Yearly

attr i_softplus get361Name Report_Water_Daily
attr i_softplus get381Name Report_Water_Monthly
attr i_softplus get371Name Report_Water_Weekly
attr i_softplus get391Name Report_Water_Yearly
attr i_softplus get41Name Report_WaterOfDays

attr i_softplus get60Name Waterstop_Abstraction_Time
attr i_softplus get44Name Waterstop_Actual_Quantity
attr i_softplus get62Name Waterstop_Flow_Rate
attr i_softplus get64Name Waterstop_Quantity
attr i_softplus get55Name Waterstop_Standby
attr i_softplus get66Name Waterstop_Vacation
attr i_softplus get58Name Waterstop_Valve

#### set Befehle
attr i_softplus set59Name Waterstop_Abstraction_Time
attr i_softplus set61Name Waterstop_FlowRate
attr i_softplus set63Name Waterstop_Quantity
attr i_softplus set54Name Waterstop_Standby
attr i_softplus set65Name Waterstop_Vacation
attr i_softplus set56Name Waterstop_Valve


Hiermit bin ich noch nicht zufrieden, gibt es hier nicht noch eine Sinnvolle Gruppierung, z.B. Service_ ???

## get Befehle
attr i_softplus get45Name Salt_Quantity
attr i_softplus get47Name Salt_Range
attr i_softplus get50Name Hardness_Natural
attr i_softplus get49Name Hardness_Residual
attr i_softplus get53Name Regeneration

#### set Befehle
attr i_softplus set46Name Salt_Quantity
attr i_softplus set48Name Hardness_Residual
attr i_softplus set51Name Regeneration


In Deinem stateFormat  scheinen auch noch Fehler zu sein, oder Du erzeugst mit den DOIFs noch weitere readings, die in meiner Grunddefinition nicht drin sind.

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 14 Oktober 2020, 22:38:44
Moin Christian,

freut mich, das Du mir nicht "den Kopf abgerissen" hast.

Hier das jetztige Stateformat:
## Stateformat
attr i_softplus stateFormat Leckageschutz: waterstop-state<br><br>\
Wasserdurchfluss: Raw water-current-raw l / Soft water-current-soft l<br><br>\
Gesamtwassermenge: Raw water-total-raw l / Soft water-total-soft l<br><br>\
Natuerlichehaerte: hardness-natural dH<br><br>\
Wunschwasserhaerte: hardness-residual dH<br><br>\
Wasserdurchschnitt: water-average l/Tag<br><br>\
Salzvorrat: salt-days Tage, salt-weeks Wochen, salt-percent %<br><br>\
Max_Wasserdurchfluss: waterstop-flow-rate l/Std<br>\
Max_Entnahmemenge: waterstop-quantity l<br>\
Max_Entnahmedauer: waterstop-actual-abstraction-time min<br><br>\
Urlaubsmodus: waterstop-vacation Sleepmodusdauer: waterstop-standby


Vorschlag für "get", bin aber auch noch nicht janz glücklich.
## get Befehle
attr i_softplus get22Name info_SoftwareVersion
attr i_softplus get23Name info_HardwareVersion
attr i_softplus get28Name info_SerialNumber
attr i_softplus get32Name info_InitDate
attr i_softplus get33Name info_ServiceNumber
attr i_softplus get34Name info_ServiceDate
attr i_softplus get35Name Wasserdurchfluss
attr i_softplus get36-10Name water-daily-3hour-06
attr i_softplus get36-11Name water-daily-3hour-07
attr i_softplus get36-12Name water-daily-3hour-08
attr i_softplus get36-5Name water-daily-3hour-01
attr i_softplus get36-6Name water-daily-3hour-02
attr i_softplus get36-7Name water-daily-3hour-03
attr i_softplus get36-8Name water-daily-3hour-04
attr i_softplus get36-9Name water-daily-3hour-05
attr i_softplus get361-10Name report-water-daily-3hour-06
attr i_softplus get361-11Name report-water-daily-3hour-07
attr i_softplus get361-12Name report-water-daily-3hour-08
attr i_softplus get361-5Name report-water-daily-3hour-01
attr i_softplus get361-6Name report-water-daily-3hour-02
attr i_softplus get361-7Name report-water-daily-3hour-03
attr i_softplus get361-8Name report-water-daily-3hour-04
attr i_softplus get361-9Name report-water-daily-3hour-05
attr i_softplus get361Name report_Water_Daily
attr i_softplus get36Name Wasser_Tages_Verbrauch
attr i_softplus get37-10Name water-weekly-by-day-06
attr i_softplus get37-11Name water-weekly-by-day-07
attr i_softplus get37-5Name water-weekly-by-day-01
attr i_softplus get37-6Name water-weekly-by-day-02
attr i_softplus get37-7Name water-weekly-by-day-03
attr i_softplus get37-8Name water-weekly-by-day-04
attr i_softplus get37-9Name water-weekly-by-day-05
attr i_softplus get371-10Name report-water-weekly-by-day-06
attr i_softplus get371-11Name report-water-weekly-by-day-07
attr i_softplus get371-5Name report-water-weekly-by-day-01
attr i_softplus get371-6Name report-water-weekly-by-day-02
attr i_softplus get371-7Name report-water-weekly-by-day-03
attr i_softplus get371-8Name report-water-weekly-by-day-04
attr i_softplus get371-9Name report-water-weekly-by-day-05
attr i_softplus get371Name report_Water_Weekly
attr i_softplus get37Name Water_Weekly
attr i_softplus get38-10Name water-monthly-by-day-06
attr i_softplus get38-11Name water-monthly-by-day-07
attr i_softplus get38-12Name water-monthly-by-day-08
attr i_softplus get38-13Name water-monthly-by-day-09
attr i_softplus get38-14Name water-monthly-by-day-10
attr i_softplus get38-15Name water-monthly-by-day-11
attr i_softplus get38-16Name water-monthly-by-day-12
attr i_softplus get38-17Name water-monthly-by-day-13
attr i_softplus get38-18Name water-monthly-by-day-14
attr i_softplus get38-19Name water-monthly-by-day-15
attr i_softplus get38-20Name water-monthly-by-day-16
attr i_softplus get38-21Name water-monthly-by-day-17
attr i_softplus get38-22Name water-monthly-by-day-18
attr i_softplus get38-23Name water-monthly-by-day-19
attr i_softplus get38-24Name water-monthly-by-day-20
attr i_softplus get38-25Name water-monthly-by-day-21
attr i_softplus get38-26Name water-monthly-by-day-22
attr i_softplus get38-27Name water-monthly-by-day-23
attr i_softplus get38-28Name water-monthly-by-day-24
attr i_softplus get38-29Name water-monthly-by-day-25
attr i_softplus get38-30Name water-monthly-by-day-26
attr i_softplus get38-31Name water-monthly-by-day-27
attr i_softplus get38-32Name water-monthly-by-day-28
attr i_softplus get38-33Name water-monthly-by-day-29
attr i_softplus get38-34Name water-monthly-by-day-30
attr i_softplus get38-35Name water-monthly-by-day-31
attr i_softplus get38-5Name water-monthly-by-day-01
attr i_softplus get38-6Name water-monthly-by-day-02
attr i_softplus get38-7Name water-monthly-by-day-03
attr i_softplus get38-8Name water-monthly-by-day-04
attr i_softplus get38-9Name water-monthly-by-day-05
attr i_softplus get381-10Name report-water-monthly-by-day-06
attr i_softplus get381-11Name report-water-monthly-by-day-07
attr i_softplus get381-12Name report-water-monthly-by-day-08
attr i_softplus get381-13Name report-water-monthly-by-day-09
attr i_softplus get381-14Name report-water-monthly-by-day-10
attr i_softplus get381-15Name report-water-monthly-by-day-11
attr i_softplus get381-16Name report-water-monthly-by-day-12
attr i_softplus get381-17Name report-water-monthly-by-day-13
attr i_softplus get381-18Name report-water-monthly-by-day-14
attr i_softplus get381-19Name report-water-monthly-by-day-15
attr i_softplus get381-20Name report-water-monthly-by-day-16
attr i_softplus get381-21Name report-water-monthly-by-day-17
attr i_softplus get381-22Name report-water-monthly-by-day-18
attr i_softplus get381-23Name report-water-monthly-by-day-19
attr i_softplus get381-24Name report-water-monthly-by-day-20
attr i_softplus get381-25Name report-water-monthly-by-day-21
attr i_softplus get381-26Name report-water-monthly-by-day-22
attr i_softplus get381-27Name report-water-monthly-by-day-23
attr i_softplus get381-28Name report-water-monthly-by-day-24
attr i_softplus get381-29Name report-water-monthly-by-day-25
attr i_softplus get381-30Name report-water-monthly-by-day-26
attr i_softplus get381-31Name report-water-monthly-by-day-27
attr i_softplus get381-32Name report-water-monthly-by-day-28
attr i_softplus get381-33Name report-water-monthly-by-day-29
attr i_softplus get381-34Name report-water-monthly-by-day-30
attr i_softplus get381-35Name report-water-monthly-by-day-31
attr i_softplus get381-5Name report-water-monthly-by-day-01
attr i_softplus get381-6Name report-water-monthly-by-day-02
attr i_softplus get381-7Name report-water-monthly-by-day-03
attr i_softplus get381-8Name report-water-monthly-by-day-04
attr i_softplus get381-9Name report-water-monthly-by-day-05
attr i_softplus get381Name report_Water-Monthly
attr i_softplus get38Name Water_Monthly
attr i_softplus get39-10Name water-year-by-month-06
attr i_softplus get39-11Name water-year-by-month-07
attr i_softplus get39-12Name water-year-by-month-08
attr i_softplus get39-13Name water-year-by-month-09
attr i_softplus get39-14Name water-year-by-month-10
attr i_softplus get39-15Name water-year-by-month-11
attr i_softplus get39-16Name water-year-by-month-12
attr i_softplus get39-5Name water-year-by-month-01
attr i_softplus get39-6Name water-year-by-month-02
attr i_softplus get39-7Name water-year-by-month-03
attr i_softplus get39-8Name water-year-by-month-04
attr i_softplus get39-9Name water-year-by-month-05
attr i_softplus get391-10Name report-water-year-by-month-06
attr i_softplus get391-11Name report-water-year-by-month-07
attr i_softplus get391-12Name report-water-year-by-month-08
attr i_softplus get391-13Name report-water-year-by-month-09
attr i_softplus get391-14Name report-water-year-by-month-10
attr i_softplus get391-15Name report-water-year-by-month-11
attr i_softplus get391-16Name report-water-year-by-month-12
attr i_softplus get391-5Name report-water-year-by-month-01
attr i_softplus get391-6Name report-water-year-by-month-02
attr i_softplus get391-7Name report-water-year-by-month-03
attr i_softplus get391-8Name report-water-year-by-month-04
attr i_softplus get391-9Name report-water-year-by-month-05
attr i_softplus get391Name report_Water-Yearly
attr i_softplus get39Name Water_Yearly
attr i_softplus get40Name Gesamtwassermenge
attr i_softplus get41Name report_WaterOfDays
attr i_softplus get42Name Wasserdurchschnitt
attr i_softplus get43Name Max_Entnahmemenge
attr i_softplus get44Name Max_Entnahmemenge
attr i_softplus get45Name Salzvorrat_Protent
attr i_softplus get47Name Salzvorrat_Tage
attr i_softplus get49Name Wunschwasserhaerte
attr i_softplus get50Name Natuerlichehaerte
attr i_softplus get53Name info_Regerneration
attr i_softplus get55Name Sleepmodusdauer
attr i_softplus get58Name Leckageschutz
attr i_softplus get60Name Max_Entnahmedauer
attr i_softplus get62Name Max_Wasserdurchfluss
attr i_softplus get64Name Max_Entnahmemenge_auch
attr i_softplus get66Name Urlaubsmodus


Geht mir mit den "set's" nicht ganz so.

#### set Befehle
attr i_softplus set46Hint slider,25,25,50
attr i_softplus set46Name Salz_nachfuellen_kg
attr i_softplus set48Hint slider,6,1,10
attr i_softplus set48Name Wunschwasserhaerte
attr i_softplus set51Hint start,stop
attr i_softplus set51Name Regerneration
attr i_softplus set54Name Sleepmodusdauer
attr i_softplus set56Hint close,open
attr i_softplus set56Name Leckageschutz
attr i_softplus set59Name Max_Entnahmedauer
attr i_softplus set61Hint slider,0,500,5000
attr i_softplus set61Name Max_Wasserdurchfluss
attr i_softplus set63Hint slider,100,100,3000
attr i_softplus set63Name Max_Entnahmemenge
attr i_softplus set65Name Urlaubsmodus


Vorschlag für die "Readings":
attr i_softplus reading22Name info-software-version
attr i_softplus reading23Name info-hardware-version
attr i_softplus reading28Name info-serial-number
attr i_softplus reading34Name info-service-date
attr i_softplus reading351Name water-current-raw
attr i_softplus reading352Name water-current-soft
attr i_softplus reading401Name water-total-raw
attr i_softplus reading402Name water-total-soft
attr i_softplus reading411Name water-of-days-date
attr i_softplus reading412Name water-of-days-day
attr i_softplus reading42Name water-average
attr i_softplus reading43Name waterstop-actual-abstraction-time
attr i_softplus reading44Name waterstop-quantity
attr i_softplus reading45Name salt-percent
attr i_softplus reading471Name salt-weeks
attr i_softplus reading47Name salt-days
attr i_softplus reading49Name hardness-residual
attr i_softplus reading50Name hardness-natural
attr i_softplus reading53Name info_regerneration
attr i_softplus reading55Name waterstop-standby
attr i_softplus reading58Name waterstop-state
attr i_softplus reading62Name waterstop-flow-rate
attr i_softplus reading64Name waterstop-quantity
attr i_softplus reading66Name waterstop-vacation


Bis dann
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 15 Oktober 2020, 08:32:13
Moin,

an die readings wollte ich eigentlich nicht mehr ran, sondern nur an die Menünamen, aber so sei es.
Auch die Mischung zwischen Englisch und Deutsch stört etwas.

Mich stört noch die "GroßKlein" Schreibung, die Du jetzt in "-" aufgelöst hast.

water-daily-3hour-06 das -06 wird vom HTTPMOD generiert

WaterDaily3Hour-04 würde ich so lassen wollen, über die Gruppierung kann man diskutieren, hier hatte ich versucht die readings mit Gruppe_Name-NN zusammen zu fassen.

Von der API kommt die Gruppe und der Name
Bei Fhem wird ein %20 = Blank dann in einen Unterstrich umgesetzt
Die -nn kommt dann von der automatischen Nummerierung.

So entsteht dann "consumption_water_daily-01", wobei ich das dann bereits in "consumption_WaterDaily-01" als reading umgesetzt habe, damit im reading Namen nicht noch weitere - oder _ sind.

req=https://192.168.178.12:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%3CTOKEN%3E&year=%3CYEAR%3E&month=%3CMONTH%3E&day=%3CDAY%3E
, res={"group":"consumption","command":"water daily","msgnumber":"1","token":"<TOKEN>","year":"<YEAR>","month":"<MONTH>","day":"<DAY>","status":"error","data":"not logged in"}


Das nur in Kürze
    Christian

Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 16 Oktober 2020, 17:57:48
EDIT: Aktualisierung des ersten Post 2020.10.19 11:30

Hey,
ich habe das stateFormat mal umformatiert. Wie ist die allgemeine Meinung dazu?

Viele Grüße
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: maltejahn am 09 November 2020, 08:34:42
Guten Morgen,

ich versuche hier die "Safe" (also nicht Plus" Variante) in FHEM einzubinden. Bei der Safe muss man die Daten ja auf der Webseite myjudo.eu abrufen

Ich glaube mein Problem ist zuerst das ich keinen Token bekomme. Manuell funktioniert es:


https://www.myjudo.eu/interface/?group=register&command=login&name=login&user=MeinUser&password=MD5VomPasswort&nohash=Service&role=customer
{"status":"ok","token":"DerToken","role":"customer","notifications":{"email":"0","sms":"0","push":"0"},"startpage":null,"data":[],"servicenumber":""}

Userkonto + MD5 scheinen zu funktionieren.

Der Fehler
2020.11.09 07:52:52 5: JUDO_iSoft: get called with DeviceData
2020.11.09 07:52:52 5: JUDO_iSoft: get found option DeviceData in attribute get01Name
2020.11.09 07:52:52 4: JUDO_iSoft: get will now request DeviceData, no optional value
2020.11.09 07:52:52 5: JUDO_iSoft: AddToQueue adds type get01 to URL https://%JUDO_ipaddress%/interface/?token=%token%&group=register&command=get%20device%20data, no data, header Content-Type: application/json
Accept: */*, retry 0, initial queue len: 0
2020.11.09 07:52:52 5: JUDO_iSoft: HandleSendQueue called, qlen = 1
2020.11.09 07:52:52 5: JUDO_iSoft: GetRegex found precompiled Regex for replacement01 as (?^:%token%)
2020.11.09 07:52:52 5: JUDO_iSoft: Replace called for type get01, regex (?^:%token%), mode reading, value token input: Content-Type: application/json
viele weitere Einträge...
2020.11.09 07:52:52 5: HttpUtils url=https://www.myjudo.eu/interface/?token=&group=register&command=get%20device%20data
2020.11.09 07:52:52 4: IP: www.myjudo.eu -> 178.15.150.126
2020.11.09 07:52:52 5: HttpUtils request header:
GET /interface/?token=&group=register&command=get%20device%20data HTTP/1.0
Host: www.myjudo.eu
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Type: application/json
Accept: */*

2020.11.09 07:52:52 4: https://www.myjudo.eu/interface/?token=&group=register&command=get%20device%20data: HTTP response code 200
2020.11.09 07:52:52 5: HttpUtils https://www.myjudo.eu/interface/?token=&group=register&command=get%20device%20data: Got data, length: 0
2020.11.09 07:52:52 5: HttpUtils response header:
HTTP/1.1 200 OK
Date: Mon, 09 Nov 2020 06:52:52 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Access-Control-Allow-Origin: *
Content-Length: 0
Connection: close
Content-Type: application/json; charset=utf-8
2020.11.09 07:52:52 4: JUDO_iSoft: Read callback: request type was get01 retry 0,
header: HTTP/1.1 200 OK
Date: Mon, 09 Nov 2020 06:52:52 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Access-Control-Allow-Origin: *
Content-Length: 0
Connection: close
Content-Type: application/json; charset=utf-8, no body
2020.11.09 07:52:52 5: JUDO_iSoft: Read callback: body empty
2020.11.09 07:52:52 4: JUDO_iSoft: Read found charset header and set decoding to utf-8 (bodyDecode was set to auto)
2020.11.09 07:52:52 4: JUDO_iSoft: Read is decoding the buffer as utf-8
2020.11.09 07:52:52 5: JUDO_iSoft: GetCookies is looking for Cookies
2020.11.09 07:52:52 5: JUDO_iSoft: ExtractSid called, context get, num 01
2020.11.09 07:52:52 4: JUDO_iSoft: checking for redirects, code=200, ignore=0
2020.11.09 07:52:52 4: JUDO_iSoft: no redirects to handle
2020.11.09 07:52:52 5: JUDO_iSoft: GetRegex found precompiled reAuthRegex for  as (?^:(no token)|(not logged in))
2020.11.09 07:52:52 5: JUDO_iSoft: CheckAuth is checking buffer with ReAuthRegex (?^:(no token)|(not logged in))
2020.11.09 07:52:52 5: JUDO_iSoft: CheckAuth decided no authentication required
2020.11.09 07:52:52 5: JUDO_iSoft: ExtractReading DeviceData with json data ...
2020.11.09 07:52:52 5: JUDO_iSoft: ExtractReading DeviceData did not match
2020.11.09 07:52:52 3: JUDO_iSoft: no parsed JSON structure available
2020.11.09 07:52:52 4: JUDO_iSoft: Read response to get01 didn't match any Reading
2020.11.09 07:52:52 5: JUDO_iSoft: HandleSendQueue called, qlen = 0


Eigentlich sollte doch sid01URL zuerst aufgerufen werden. Also die URL zum abrufen des Token, anschließend mit dem Token den eigentlichen URL aufruf (welcher manuell auch funktioniert -> lange JSON "Liste").
Außer den selbst angelegten Readings erscheint nichts auf der Device - Übersicht.



Definiert ist das ganze mit:
define JUDO_iSoft HTTPMOD https://%JUDO_ipaddress%/?group=waterstop&command=valve&msgnumber=4&token=%token% 300
setuuid JUDO_iSoft ..
attr JUDO_iSoft userattr get01JSON get01Name get01URL get02JSON get02Name get02URL getHeader1 getHeader2 reading01JSON reading01Name reading01Regex reading02JSON reading03JSON reading03OExpr replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value replacement06Mode:reading,internal,text,expression,key replacement06Regex replacement06Value sid01ParseResponse:0,1 sid01URL
attr JUDO_iSoft authRetries 2
attr JUDO_iSoft enableControlSet 1
attr JUDO_iSoft extractAllJSON 1
attr JUDO_iSoft get01JSON data
attr JUDO_iSoft get01Name DeviceData
attr JUDO_iSoft get01URL https://%JUDO_ipaddress%/interface/?token=%token%&group=register&command=get%20device%20data
attr JUDO_iSoft get02JSON data
attr JUDO_iSoft get02Name WaterConsumptionDay
attr JUDO_iSoft get02URL https://%JUDO_ipaddress%/interface/?token=%token%&group=register&command=get_chart_data&serialnumber=%JUDO_serial%date=%date%&parameter=day
attr JUDO_iSoft getHeader1 Content-Type: application/json
attr JUDO_iSoft getHeader2 Accept: */*
attr JUDO_iSoft reAuthRegex (no token)|(not logged in)
attr JUDO_iSoft reading01JSON data
attr JUDO_iSoft reading01Name token
attr JUDO_iSoft reading01Regex "token":"([^"]+)"
attr JUDO_iSoft reading02JSON group
attr JUDO_iSoft reading03JSON command
attr JUDO_iSoft reading03OExpr $val =~ s/\s/-/;; $val;; readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data",""))
attr JUDO_iSoft replacement01Mode reading
attr JUDO_iSoft replacement01Regex %token%
attr JUDO_iSoft replacement01Value token
attr JUDO_iSoft replacement02Mode text
attr JUDO_iSoft replacement02Regex %JUDO_ipaddress%
attr JUDO_iSoft replacement02Value www.myjudo.eu
attr JUDO_iSoft replacement03Mode text
attr JUDO_iSoft replacement03Regex %JUDO_password%
attr JUDO_iSoft replacement03Value Md5HashPasswort
attr JUDO_iSoft replacement04Mode text
attr JUDO_iSoft replacement04Regex %JUDO_username%
attr JUDO_iSoft replacement04Value MeinUser
attr JUDO_iSoft replacement05Mode text
attr JUDO_iSoft replacement05Regex %JUDO_serial%
attr JUDO_iSoft replacement05Value Seriennummer/MacAdresse im Format 12345678
attr JUDO_iSoft replacement06Mode reading
attr JUDO_iSoft replacement06Regex %date%
attr JUDO_iSoft replacement06Value date
attr JUDO_iSoft room SmartDevices
attr JUDO_iSoft showError 1
attr JUDO_iSoft sid01ParseResponse 1
attr JUDO_iSoft sid01URL https://%JUDO_ipaddress%/interface/?group=register&command=login&name=login&user=%JUDO_username%&password=%JUDO_password%&nohash=Service&role=customer
attr JUDO_iSoft timeout 5
attr JUDO_iSoft userReadings waterTotal { ( hex ( substr(ReadingsVal("JUDO_iSoft","DeviceData-41", ''), 6, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-41", ''), 4, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-41", ''), 2, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-41", ''), 0, 2)) / 1000 ). ' m³'}, waterProcessed { ( hex ( substr(ReadingsVal("JUDO_iSoft","DeviceData-53", ''), 6, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-53", ''), 4, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-53", ''), 2, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-53", ''), 0, 2)) / 1000 ). ' m³'}, saltLevel { ( hex ( substr(ReadingsVal("JUDO_iSoft","DeviceData-50", ''), 2, 2).substr(ReadingsVal("JUDO_iSoft","data_01_data_01_data_94_data", ''), 0, 2))/1  ). ' g'}, saltRange { hex ( substr(ReadingsVal("JUDO_iSoft","DeviceData-50", ''), 6, 2).substr(ReadingsVal("JUDO_iSoft","DeviceData-50", ''), 4, 2)). " Tage" }


Vielen Dank
Malte
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 November 2020, 09:22:02
Für die isoft Save ist nun hier isoft Save (https://forum.fhem.de/index.php/topic,115696.msg1099613.html#msg1099613) ein Thread offen

Viele Grüße
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Februar 2021, 14:40:45
Hallo zusammen,
ich habe eine FHEM Funktion kennengelernt und damit die ganzen deletereading Meldungen im Log beseitigt.
Es betrifft die userreadings, jedoch habe ich hier nochmal das gesamte RAW angelistet.


defmod JUDO_iSoft HTTPMOD https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=4&token=%token% 0
attr JUDO_iSoft DbLogExclude .*
attr JUDO_iSoft DbLogInclude consumption_WaterCurrent.*,consumption_WaterAverage,consumption_Water.*Summe,consumption_WaterTotal.*,consumption_Salt.*
attr JUDO_iSoft alias JUDO_iSoft
attr JUDO_iSoft authRetries 2
attr JUDO_iSoft comment Version 2020.10.16 20:10\
Web API auf :8000\
https://blog.muwave.de/2017/06/monitoring-and-controlling-a-judo-i-soft-plus-water-softening-device-via-lan/
attr JUDO_iSoft disable 0
attr JUDO_iSoft enableControlSet 0
attr JUDO_iSoft event-on-change-reading consumption_.*,waterstop_.*
attr JUDO_iSoft event-on-update-reading consumption_WaterDaily3Hour-01.*,consumption_report_WaterDaily3Hour-01.*,consumption_report_WaterDailyDate.*,consumption_WaterWeeklyByDay-01.*,consumption_report_WaterWeeklyByDay-01.*,consumption_report_WaterWeeklyDate.*,consumption_WaterMonthlyByDay-01.*,consumption_report_WaterMonthlyByDay-01.*,consumption_report_WaterMonthlyDate.*,consumption_WaterYearByMonth-01.*,consumption_report_WaterYearByMonth-01.*,consumption_report_WaterYearDate.*
attr JUDO_iSoft extractAllJSON 0
attr JUDO_iSoft get22Name Info_SoftwareVersion
attr JUDO_iSoft get22URL https://%JUDO_ipaddress%:8124/?group=version&command=software%20version&msgnumber=1&token=%token%
attr JUDO_iSoft get23Name Info_HardwareVersion
attr JUDO_iSoft get23URL https://%JUDO_ipaddress%:8124/?group=version&command=hardware%20version&msgnumber=1&token=%token%
attr JUDO_iSoft get28Name Info_SerialNumber
attr JUDO_iSoft get28URL https://%JUDO_ipaddress%:8124/?group=spare%20part&command=serial%20number&msgnumber=5&token=%token%
attr JUDO_iSoft get32Name Info_InitDate
attr JUDO_iSoft get32URL https://%JUDO_ipaddress%:8124/?group=contract&command=init%20date&msgnumber=1&token=%token%
attr JUDO_iSoft get33Name Info_ServiceNumber
attr JUDO_iSoft get33URL https://%JUDO_ipaddress%:8124/?group=contract&command=ervice%20number&msgnumber=1&token=%token%
attr JUDO_iSoft get34Name Info_ServiceDate
attr JUDO_iSoft get34URL https://%JUDO_ipaddress%:8124/?group=contract&command=service%20date&msgnumber=1&token=%token%
attr JUDO_iSoft get35Name Water_Current
attr JUDO_iSoft get35URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20current&msgnumber=1&token=%token%
attr JUDO_iSoft get36-10Name consumption_WaterDaily3Hour-06
attr JUDO_iSoft get36-11Name consumption_WaterDaily3Hour-07
attr JUDO_iSoft get36-12Name consumption_WaterDaily3Hour-08
attr JUDO_iSoft get36-5Name consumption_WaterDaily3Hour-01
attr JUDO_iSoft get36-6Name consumption_WaterDaily3Hour-02
attr JUDO_iSoft get36-7Name consumption_WaterDaily3Hour-03
attr JUDO_iSoft get36-8Name consumption_WaterDaily3Hour-04
attr JUDO_iSoft get36-9Name consumption_WaterDaily3Hour-05
attr JUDO_iSoft get361-10Name consumption_report_WaterDaily3Hour-06
attr JUDO_iSoft get361-11Name consumption_report_WaterDaily3Hour-07
attr JUDO_iSoft get361-12Name consumption_report_WaterDaily3Hour-08
attr JUDO_iSoft get361-5Name consumption_report_WaterDaily3Hour-01
attr JUDO_iSoft get361-6Name consumption_report_WaterDaily3Hour-02
attr JUDO_iSoft get361-7Name consumption_report_WaterDaily3Hour-03
attr JUDO_iSoft get361-8Name consumption_report_WaterDaily3Hour-04
attr JUDO_iSoft get361-9Name consumption_report_WaterDaily3Hour-05
attr JUDO_iSoft get361DeleteIfUnmatched 1
attr JUDO_iSoft get361MaxAge 86400
attr JUDO_iSoft get361Name Report_Water_Daily
attr JUDO_iSoft get361RegOpt g
attr JUDO_iSoft get361Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get361URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr JUDO_iSoft get36DeleteIfUnmatched 1
attr JUDO_iSoft get36Name Water_Daily
attr JUDO_iSoft get36RegOpt g
attr JUDO_iSoft get36Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get36URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20daily&msgnumber=1&token=%token%
attr JUDO_iSoft get37-10Name consumption_WaterWeeklyByDay-06
attr JUDO_iSoft get37-11Name consumption_WaterWeeklyByDay-07
attr JUDO_iSoft get37-5Name consumption_WaterWeeklyByDay-01
attr JUDO_iSoft get37-6Name consumption_WaterWeeklyByDay-02
attr JUDO_iSoft get37-7Name consumption_WaterWeeklyByDay-03
attr JUDO_iSoft get37-8Name consumption_WaterWeeklyByDay-04
attr JUDO_iSoft get37-9Name consumption_WaterWeeklyByDay-05
attr JUDO_iSoft get371-10Name consumption_report_WaterWeeklyByDay-06
attr JUDO_iSoft get371-11Name consumption_report_WaterWeeklyByDay-07
attr JUDO_iSoft get371-5Name consumption_report_WaterWeeklyByDay-01
attr JUDO_iSoft get371-6Name consumption_report_WaterWeeklyByDay-02
attr JUDO_iSoft get371-7Name consumption_report_WaterWeeklyByDay-03
attr JUDO_iSoft get371-8Name consumption_report_WaterWeeklyByDay-04
attr JUDO_iSoft get371-9Name consumption_report_WaterWeeklyByDay-05
attr JUDO_iSoft get371AutoNumLen 2
attr JUDO_iSoft get371MaxAge 86400
attr JUDO_iSoft get371Name Report_Water_Weekly
attr JUDO_iSoft get371RegOpt g
attr JUDO_iSoft get371Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get371URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%
attr JUDO_iSoft get37AutoNumLen 2
attr JUDO_iSoft get37Name Water_Weekly
attr JUDO_iSoft get37RegOpt g
attr JUDO_iSoft get37Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get37URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%
attr JUDO_iSoft get38-10Name consumption_WaterMonthlyByDay-06
attr JUDO_iSoft get38-11Name consumption_WaterMonthlyByDay-07
attr JUDO_iSoft get38-12Name consumption_WaterMonthlyByDay-08
attr JUDO_iSoft get38-13Name consumption_WaterMonthlyByDay-09
attr JUDO_iSoft get38-14Name consumption_WaterMonthlyByDay-10
attr JUDO_iSoft get38-15Name consumption_WaterMonthlyByDay-11
attr JUDO_iSoft get38-16Name consumption_WaterMonthlyByDay-12
attr JUDO_iSoft get38-17Name consumption_WaterMonthlyByDay-13
attr JUDO_iSoft get38-18Name consumption_WaterMonthlyByDay-14
attr JUDO_iSoft get38-19Name consumption_WaterMonthlyByDay-15
attr JUDO_iSoft get38-20Name consumption_WaterMonthlyByDay-16
attr JUDO_iSoft get38-21Name consumption_WaterMonthlyByDay-17
attr JUDO_iSoft get38-22Name consumption_WaterMonthlyByDay-18
attr JUDO_iSoft get38-23Name consumption_WaterMonthlyByDay-19
attr JUDO_iSoft get38-24Name consumption_WaterMonthlyByDay-20
attr JUDO_iSoft get38-25Name consumption_WaterMonthlyByDay-21
attr JUDO_iSoft get38-26Name consumption_WaterMonthlyByDay-22
attr JUDO_iSoft get38-27Name consumption_WaterMonthlyByDay-23
attr JUDO_iSoft get38-28Name consumption_WaterMonthlyByDay-24
attr JUDO_iSoft get38-29Name consumption_WaterMonthlyByDay-25
attr JUDO_iSoft get38-30Name consumption_WaterMonthlyByDay-26
attr JUDO_iSoft get38-31Name consumption_WaterMonthlyByDay-27
attr JUDO_iSoft get38-32Name consumption_WaterMonthlyByDay-28
attr JUDO_iSoft get38-33Name consumption_WaterMonthlyByDay-29
attr JUDO_iSoft get38-34Name consumption_WaterMonthlyByDay-30
attr JUDO_iSoft get38-35Name consumption_WaterMonthlyByDay-31
attr JUDO_iSoft get38-5Name consumption_WaterMonthlyByDay-01
attr JUDO_iSoft get38-6Name consumption_WaterMonthlyByDay-02
attr JUDO_iSoft get38-7Name consumption_WaterMonthlyByDay-03
attr JUDO_iSoft get38-8Name consumption_WaterMonthlyByDay-04
attr JUDO_iSoft get38-9Name consumption_WaterMonthlyByDay-05
attr JUDO_iSoft get381-10Name consumption_report_WaterMonthlyByDay-06
attr JUDO_iSoft get381-11Name consumption_report_WaterMonthlyByDay-07
attr JUDO_iSoft get381-12Name consumption_report_WaterMonthlyByDay-08
attr JUDO_iSoft get381-13Name consumption_report_WaterMonthlyByDay-09
attr JUDO_iSoft get381-14Name consumption_report_WaterMonthlyByDay-10
attr JUDO_iSoft get381-15Name consumption_report_WaterMonthlyByDay-11
attr JUDO_iSoft get381-16Name consumption_report_WaterMonthlyByDay-12
attr JUDO_iSoft get381-17Name consumption_report_WaterMonthlyByDay-13
attr JUDO_iSoft get381-18Name consumption_report_WaterMonthlyByDay-14
attr JUDO_iSoft get381-19Name consumption_report_WaterMonthlyByDay-15
attr JUDO_iSoft get381-20Name consumption_report_WaterMonthlyByDay-16
attr JUDO_iSoft get381-21Name consumption_report_WaterMonthlyByDay-17
attr JUDO_iSoft get381-22Name consumption_report_WaterMonthlyByDay-18
attr JUDO_iSoft get381-23Name consumption_report_WaterMonthlyByDay-19
attr JUDO_iSoft get381-24Name consumption_report_WaterMonthlyByDay-20
attr JUDO_iSoft get381-25Name consumption_report_WaterMonthlyByDay-21
attr JUDO_iSoft get381-26Name consumption_report_WaterMonthlyByDay-22
attr JUDO_iSoft get381-27Name consumption_report_WaterMonthlyByDay-23
attr JUDO_iSoft get381-28Name consumption_report_WaterMonthlyByDay-24
attr JUDO_iSoft get381-29Name consumption_report_WaterMonthlyByDay-25
attr JUDO_iSoft get381-30Name consumption_report_WaterMonthlyByDay-26
attr JUDO_iSoft get381-31Name consumption_report_WaterMonthlyByDay-27
attr JUDO_iSoft get381-32Name consumption_report_WaterMonthlyByDay-28
attr JUDO_iSoft get381-33Name consumption_report_WaterMonthlyByDay-29
attr JUDO_iSoft get381-34Name consumption_report_WaterMonthlyByDay-30
attr JUDO_iSoft get381-35Name consumption_report_WaterMonthlyByDay-31
attr JUDO_iSoft get381-5Name consumption_report_WaterMonthlyByDay-01
attr JUDO_iSoft get381-6Name consumption_report_WaterMonthlyByDay-02
attr JUDO_iSoft get381-7Name consumption_report_WaterMonthlyByDay-03
attr JUDO_iSoft get381-8Name consumption_report_WaterMonthlyByDay-04
attr JUDO_iSoft get381-9Name consumption_report_WaterMonthlyByDay-05
attr JUDO_iSoft get381DeleteIfUnmatched 1
attr JUDO_iSoft get381MaxAge 86400
attr JUDO_iSoft get381Name Report_Water_Monthly
attr JUDO_iSoft get381RegOpt g
attr JUDO_iSoft get381Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get381URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%
attr JUDO_iSoft get38DeleteIfUnmatched 1
attr JUDO_iSoft get38Name Water_Monthly
attr JUDO_iSoft get38RegOpt g
attr JUDO_iSoft get38Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%
attr JUDO_iSoft get39-10Name consumption_WaterYearByMonth-06
attr JUDO_iSoft get39-11Name consumption_WaterYearByMonth-07
attr JUDO_iSoft get39-12Name consumption_WaterYearByMonth-08
attr JUDO_iSoft get39-13Name consumption_WaterYearByMonth-09
attr JUDO_iSoft get39-14Name consumption_WaterYearByMonth-10
attr JUDO_iSoft get39-15Name consumption_WaterYearByMonth-11
attr JUDO_iSoft get39-16Name consumption_WaterYearByMonth-12
attr JUDO_iSoft get39-5Name consumption_WaterYearByMonth-01
attr JUDO_iSoft get39-6Name consumption_WaterYearByMonth-02
attr JUDO_iSoft get39-7Name consumption_WaterYearByMonth-03
attr JUDO_iSoft get39-8Name consumption_WaterYearByMonth-04
attr JUDO_iSoft get39-9Name consumption_WaterYearByMonth-05
attr JUDO_iSoft get391-10Name consumption_report_WaterYearByMonth-06
attr JUDO_iSoft get391-11Name consumption_report_WaterYearByMonth-07
attr JUDO_iSoft get391-12Name consumption_report_WaterYearByMonth-08
attr JUDO_iSoft get391-13Name consumption_report_WaterYearByMonth-09
attr JUDO_iSoft get391-14Name consumption_report_WaterYearByMonth-10
attr JUDO_iSoft get391-15Name consumption_report_WaterYearByMonth-11
attr JUDO_iSoft get391-16Name consumption_report_WaterYearByMonth-12
attr JUDO_iSoft get391-5Name consumption_report_WaterYearByMonth-01
attr JUDO_iSoft get391-6Name consumption_report_WaterYearByMonth-02
attr JUDO_iSoft get391-7Name consumption_report_WaterYearByMonth-03
attr JUDO_iSoft get391-8Name consumption_report_WaterYearByMonth-04
attr JUDO_iSoft get391-9Name consumption_report_WaterYearByMonth-05
attr JUDO_iSoft get391AutoNumLen 2
attr JUDO_iSoft get391MaxAge 86400
attr JUDO_iSoft get391Name Report_Water_Yearly
attr JUDO_iSoft get391RegOpt g
attr JUDO_iSoft get391Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get391URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%&year=%_YEAR%
attr JUDO_iSoft get39AutoNumLen 2
attr JUDO_iSoft get39Name Water_Yearly
attr JUDO_iSoft get39RegOpt g
attr JUDO_iSoft get39Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get39URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20yearly&msgnumber=1&token=%token%
attr JUDO_iSoft get40Name Water_Total
attr JUDO_iSoft get40URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20total&msgnumber=1&token=%token%
attr JUDO_iSoft get41Name Report_WaterOfDays
attr JUDO_iSoft get41URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20weekly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%&day=%_DAY%&offset=%_OFFSET%
attr JUDO_iSoft get42Name Water_Average
attr JUDO_iSoft get42URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20average&msgnumber=1&token=%token%
attr JUDO_iSoft get43Name Water_Actual_Abstraction_Time
attr JUDO_iSoft get43URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%
attr JUDO_iSoft get44Name Waterstop_Actual_Quantity
attr JUDO_iSoft get44URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get45Name Salt_Quantity
attr JUDO_iSoft get45URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get47Name Salt_Range
attr JUDO_iSoft get47URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20range&msgnumber=1&token=%token%
attr JUDO_iSoft get49Name Hardness_Residual
attr JUDO_iSoft get49URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%
attr JUDO_iSoft get50Name Hardness_Natural
attr JUDO_iSoft get50URL https://%JUDO_ipaddress%:8124/?group=info&command=natural%20hardness&msgnumber=1&token=%token%
attr JUDO_iSoft get53Name Regeneration
attr JUDO_iSoft get53URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%
attr JUDO_iSoft get55Name Waterstop_Standby
attr JUDO_iSoft get55URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%
attr JUDO_iSoft get58Name Waterstop_Valve
attr JUDO_iSoft get58URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%
attr JUDO_iSoft get60Name Waterstop_Abstraction_Time
attr JUDO_iSoft get60URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=abstraction%20time&msgnumber=1&token=%token%
attr JUDO_iSoft get62Name Waterstop_Flow_Rate
attr JUDO_iSoft get62URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%
attr JUDO_iSoft get64Name Waterstop_Quantity
attr JUDO_iSoft get64URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%
attr JUDO_iSoft get66Name Waterstop_Vacation
attr JUDO_iSoft get66URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%
attr JUDO_iSoft getHeader1 Content-Type: application/json
attr JUDO_iSoft getHeader2 Accept: */*
attr JUDO_iSoft reAuthRegex (no token)|(not logged in)
attr JUDO_iSoft reading01Name token
attr JUDO_iSoft reading01Regex "token":"([^"]+)"
attr JUDO_iSoft reading22Name version_SoftwareVersion
attr JUDO_iSoft reading22Regex "software version","data":"(.*)","group":"version"
attr JUDO_iSoft reading23Name version_HardwareVersion
attr JUDO_iSoft reading23Regex "hardware version","data":"(.*)","group":"version"
attr JUDO_iSoft reading28Name spare_part_SerialNumber
attr JUDO_iSoft reading28Regex "serial number","data":"(.*)","group":"spare part"
attr JUDO_iSoft reading32Name contract_InitDate
attr JUDO_iSoft reading32OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr JUDO_iSoft reading32Regex "init date","data":"(.*)","group":"contract"
attr JUDO_iSoft reading34Name contract_ServiceDate
attr JUDO_iSoft reading34OExpr POSIX::strftime("%Y-%m-%d %H:%M",localtime($val))
attr JUDO_iSoft reading34Regex "service date","data":"(.*)","group":"contract"
attr JUDO_iSoft reading351Name consumption_WaterCurrentRaw
attr JUDO_iSoft reading351Regex "command":"water current","data":"(.*) .*","group":"consumption"
attr JUDO_iSoft reading352Name consumption_WaterCurrentSoft
attr JUDO_iSoft reading352Regex "command":"water current","data":".* (.*)","group":"consumption"
attr JUDO_iSoft reading401Name consumption_WaterTotalRaw
attr JUDO_iSoft reading401Regex "command":"water total","data":" (\d+) \d+","group":"consumption"
attr JUDO_iSoft reading402Name consumption_WaterTotalSoft
attr JUDO_iSoft reading402Regex "command":"water total","data":" \d+ (\d+)","group":"consumption"
attr JUDO_iSoft reading411Name consumption_WaterOfDaysDate
attr JUDO_iSoft reading411Regex "command":"water weekly.*"day":(\d+),"group".*"month":(\d+),"msg.*"offset":"(-?\d+)","status.*"week":(\d+),"year":(\d+),"wtu
attr JUDO_iSoft reading412Name consumption_WaterOfDaysByDay
attr JUDO_iSoft reading412Regex "command":"water weekly","data":" (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+).*offset
attr JUDO_iSoft reading42Name consumption_WaterAverage
attr JUDO_iSoft reading42Regex "command":"water average","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading43Name consumption_ActualAbstractionTime
attr JUDO_iSoft reading43Regex "command":"actual abstraction time","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading44Name consumption_ActualQuantity
attr JUDO_iSoft reading44Regex "command":"actual quantity","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading45Name consumption_SaltQuantityInPercent
attr JUDO_iSoft reading45OExpr int($val/50000*100)
attr JUDO_iSoft reading45Regex "command":"salt quantity","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading471Name consumption_SaltRangeInWeeks
attr JUDO_iSoft reading471OExpr int($val/7)
attr JUDO_iSoft reading471Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading47Name consumption_SaltRangeInDays
attr JUDO_iSoft reading47Regex "command":"salt range","data":"(\d+)","group":"consumption"
attr JUDO_iSoft reading49Name settings_ResidualHardness
attr JUDO_iSoft reading49Regex "residual hardness","data":"(\d+)","group":"settings"
attr JUDO_iSoft reading50Name info_NaturalHardness
attr JUDO_iSoft reading50Regex "natural hardness","data":"(\d+)","group":"info"
attr JUDO_iSoft reading53Name settings_Regeneration
attr JUDO_iSoft reading53Regex "command":"regeneration","data":"(.*)","group":"settings"
attr JUDO_iSoft reading55Name waterstop_Standby
attr JUDO_iSoft reading55Regex "command":"standby","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading58Name waterstop_State
attr JUDO_iSoft reading58Regex "command":"valve","data":"(\w+)","group":"waterstop"
attr JUDO_iSoft reading60Name waterstop_AbstractionTime
attr JUDO_iSoft reading60Regex "command":"abstraction time","data":"(\w+)","group":"waterstop"
attr JUDO_iSoft reading62Name waterstop_FlowRate
attr JUDO_iSoft reading62Regex "flow rate","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading64Name waterstop_Quantity
attr JUDO_iSoft reading64Regex "command":"quantity","data":"(\d+)","group":"waterstop"
attr JUDO_iSoft reading66Name waterstop_Vacation
attr JUDO_iSoft reading66Regex "command":"vacation","data":"(.*)","group":"waterstop"
attr JUDO_iSoft replacement01Mode reading
attr JUDO_iSoft replacement01Regex %token%
attr JUDO_iSoft replacement01Value token
attr JUDO_iSoft replacement02Mode text
attr JUDO_iSoft replacement02Regex %JUDO_ipaddress%
attr JUDO_iSoft replacement02Value 192.168.178.12
attr JUDO_iSoft replacement03Mode text
attr JUDO_iSoft replacement03Regex %JUDO_password%
attr JUDO_iSoft replacement03Value ag-I3pwt
attr JUDO_iSoft replacement04Mode text
attr JUDO_iSoft replacement04Regex %JUDO_username%
attr JUDO_iSoft replacement04Value judoMaster
attr JUDO_iSoft replacement05Mode text
attr JUDO_iSoft replacement05Regex %JUDO_serial%
attr JUDO_iSoft replacement05Value 96586
attr JUDO_iSoft replacement06Mode reading
attr JUDO_iSoft replacement06Regex %_YEAR%
attr JUDO_iSoft replacement06Value _YEAR
attr JUDO_iSoft replacement07Mode reading
attr JUDO_iSoft replacement07Regex %_MONTH%
attr JUDO_iSoft replacement07Value _MONTH
attr JUDO_iSoft replacement08Mode reading
attr JUDO_iSoft replacement08Regex %_DAY%
attr JUDO_iSoft replacement08Value _DAY
attr JUDO_iSoft replacement09Mode reading
attr JUDO_iSoft replacement09Regex %_OFFSET%
attr JUDO_iSoft replacement09Value _OFFSET
attr JUDO_iSoft replacement10Mode reading
attr JUDO_iSoft replacement10Regex %_OFFSET%
attr JUDO_iSoft replacement10Value _OFFSET
attr JUDO_iSoft room Wasser
attr JUDO_iSoft set46Name Salt_Quantity
attr JUDO_iSoft set46URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set48Hint slider,6,1,10
attr JUDO_iSoft set48Name Hardness_Residual
attr JUDO_iSoft set48URL https://%JUDO_ipaddress%:8124/?group=settings&command=residual%20hardness&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set51Hint start,stop
attr JUDO_iSoft set51Name Regeneration
attr JUDO_iSoft set51NoArg 1
attr JUDO_iSoft set51TextArg 1
attr JUDO_iSoft set51URL https://%JUDO_ipaddress%:8124/?group=settings&command=regeneration&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set54Hint 0,1
attr JUDO_iSoft set54Name Waterstop_Standby
attr JUDO_iSoft set54URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=standby&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set56Hint close,open
attr JUDO_iSoft set56Name Waterstop_Valve
attr JUDO_iSoft set56NoArg 1
attr JUDO_iSoft set56TextArg 1
attr JUDO_iSoft set56URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set59Hint slider,1,1,31
attr JUDO_iSoft set59Name Waterstop_Abstraction_Time
attr JUDO_iSoft set59URL https://%JUDO_ipaddress%:8124/?group=consumption&command=actual%20abstraction%20time&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set61Hint slider,0,500,5000
attr JUDO_iSoft set61Name Waterstop_FlowRate
attr JUDO_iSoft set61URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=flow%20rate&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set63Hint slider,100,100,3000
attr JUDO_iSoft set63Name Waterstop_Quantity
attr JUDO_iSoft set63URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=quantity&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft set65Hint slider,0,1,31
attr JUDO_iSoft set65Name Waterstop_Vacation
attr JUDO_iSoft set65URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=vacation&msgnumber=1&token=%token%&parameter=$val
attr JUDO_iSoft showBody 1
attr JUDO_iSoft showError 1
attr JUDO_iSoft sid01ParseResponse 1
attr JUDO_iSoft sid01URL https://%JUDO_ipaddress%:8124/?group=register&command=login&msgnumber=1&name=login&user=%JUDO_username%&password=%JUDO_password%&role=customer
attr JUDO_iSoft sid02URL https://%JUDO_ipaddress%:8124/?group=register&command=connect&msgnumber=6&token=%token%&parameter=i-soft%20plus&serial%20number=%JUDO_serial%
attr JUDO_iSoft stateFormat {\
my $l1   = ReadingsVal("$name","waterstop_State", "");;\
my $l2   = ReadingsVal("$name","waterstop_FlowRate", "")." l";;\
my $l3   = ReadingsVal("$name","waterstop_Quantity", "")." l";;\
my $l4   = ReadingsVal("$name","waterstop_AbstractionTime", "")." Min";;\
my $l5   = ReadingsVal("$name","waterstop_Vacation", "");;\
my $l6   = ReadingsVal("$name","waterstop_Standby", "");;\
my $d1   = ReadingsVal("$name","consumption_ActualQuantity", "")." l";;\
my $d2   = ReadingsVal("$name","consumption_WaterAverage", "")." l";;\
my $d3   = ReadingsVal("$name","consumption_WaterCurrentSoft", "")." l";;\
my $d4   = ReadingsVal("$name","consumption_WaterCurrentRaw", "")." l";;\
my $d5   = ReadingsVal("$name","consumption_WaterTotalSoft", "")." l";;\
my $d6   = ReadingsVal("$name","consumption_WaterTotalRaw", "")." l";;\
my $v1   = ReadingsVal("$name","consumption_WaterTotalRaw", "")." l";;\
my $v2   = ReadingsVal("$name","consumption_WaterDailySumme", "")." l";;\
my $v3   = ReadingsVal("$name","consumption_WaterWeeklySumme", "")." l";;\
my $h1   = ReadingsVal("$name","info_NaturalHardness", "")." °dH";;\
my $h2   = ReadingsVal("$name","settings_ResidualHardness", "")." °dH";;\
my $s1   = ReadingsVal("$name","consumption_SaltQuantityInPercent", "")." %";;\
my $s2   = ReadingsVal("$name","consumption_SaltRangeInWeeks", "")." W";;\
my $s3   = ReadingsVal("$name","consumption_SaltRangeInDays", "")." T";;\
\
"<html><table border=2 bordercolor='darkgreen' cellspacing=0>\
<tr><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Leckageschutz</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Einstellung</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Wasser</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Verbrauch</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Status</td><td style='padding-right:5px;;padding-left:5px'>".$l1."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$v1."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Max Durchfluss</td><td style='padding-right:5px;;padding-left:5px'>".$l2."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>aktuell</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Entnahme</td><td style='padding-right:5px;;padding-left:5px'>".$l3."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Tag</td><td style='padding-right:5px;;padding-left:5px'>".$v2."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Entnahmedauer</td><td style='padding-right:5px;;padding-left:5px'>".$l4."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Woche</td><td style='padding-right:5px;;padding-left:5px'>".$v3."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Urlaubsmodus</td><td style='padding-right:5px;;padding-left:5px'>".$l5."</td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Sleepmodusdauer</td><td style='padding-right:5px;;padding-left:5px'>".$l6."</td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'> </td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Wasser</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Menge</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Wasserhärte</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>Durchfluss aktuell</td><td style='padding-right:5px;;padding-left:5px'>".$d1."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;natürlich</td><td style='padding-right:5px;;padding-left:5px'>".$h1."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Durchschnitt</td><td style='padding-right:5px;;padding-left:5px'>".$d2."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;wunsch</td><td style='padding-right:5px;;padding-left:5px'>".$h2."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Soft</td><td style='padding-right:5px;;padding-left:5px'>".$d3."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>Salzvorrat</td><td style='padding-right:5px;;padding-left:5px'> </td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Raw</td><td style='padding-right:5px;;padding-left:5px'>".$d4."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Menge</td><td style='padding-right:5px;;padding-left:5px'>".$s1."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Soft gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$d5."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Reichweite</td><td style='padding-right:5px;;padding-left:5px'>".$s2."</td></tr>\
<tr><td style='padding-right:5px;;padding-left:5px;;text-align:left;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Raw gesamt</td><td style='padding-right:5px;;padding-left:5px'>".$d6."</td><td style='padding-right:5px;;padding-left:5px;;font-weight:bold'>&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;&nbsp;;Reichweite</td><td style='padding-right:5px;;padding-left:5px'>".$s3."</td></tr>\
</table></html>"\
}
attr JUDO_iSoft timeout 15
attr JUDO_iSoft userReadings consumption_WaterDailySumme:consumption_WaterDaily3Hour-01.* {my $NAME="JUDO_iSoft" ;; my $s=0 ;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterDaily3Hour-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Daily-.*");; $s},\
\
consumption_report_WaterDailyDate:consumption_report_WaterDaily3Hour-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
consumption_report_WaterDailySumme:consumption_report_WaterDailyDate.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=8;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterDaily3Hour-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_report_WaterDaily3Hour-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME Report_Water_Daily-.*");; $s},\
\
consumption_WaterWeeklySumme:consumption_WaterWeeklyByDay-01.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterWeeklyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME Water_Weekly-.*");; $s},\
\
consumption_report_WaterWeeklyDate:consumption_report_WaterWeeklyByDay-01.* {my $date=sprintf("%4d-%02d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0),ReadingsVal("$NAME","_DAY",0) );; $date },\
\
consumption_report_WaterWeeklySumme:consumption_report_WaterWeeklyDate.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=7;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterWeeklyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_report_WaterWeeklyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Weekly-.*");; $s},\
\
consumption_WaterMonthlySumme:consumption_WaterMonthlyByDay-01.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterMonthlyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Monthly-.*");; $s},\
\
consumption_report_WaterMonthlyDate:consumption_report_WaterMonthlyByDay-01.* {my $date=sprintf("%4d-%02d",ReadingsVal("$NAME","_YEAR",0),ReadingsVal("$NAME","_MONTH",0) );; $date },\
\
consumption_report_WaterMonthlySumme:consumption_report_WaterMonthlyDate.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterMonthlyByDay-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_report_WaterMonthlyByDay-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Monthly-.*");; $s},\
\
consumption_WaterYearSumme:consumption_WaterYearByMonth-01.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_WaterYearByMonth-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Water_Yearly-.*");; $s},\
\
consumption_report_WaterYearDate:consumption_report_WaterYearByMonth-01.* {my $date=sprintf("%4d",ReadingsVal("$NAME","_YEAR",0) );; $date },\
\
consumption_report_WaterYearSumme:consumption_report_WaterYearDate.* {my $NAME="JUDO_iSoft" ;;;; my $s=0 ;;;; for ( my $i=1;; $i<=31;; $i++ ) { (ReadingsVal("$NAME","consumption_report_WaterYearByMonth-".sprintf("%02d",$i),0) > 0)?$s += ReadingsVal("$NAME","consumption_report_WaterYearByMonth-".sprintf("%02d",$i),0):$s=$s;;};; CommandDeleteReading(undef, $NAME." Report_Water_Yearly-.*");; $s},\
\
\consumption_WaterOfDaysDate:consumption_WaterOfDaysDate-1.* {my $date=sprintf("%4d-%02d-%02d Week %02d used Offset %d",ReadingsVal("$NAME","consumption_WaterOfDaysDate-5",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-2",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-1",0),ReadingsVal("$NAME","consumption_WaterOfDaysDate-4",0),ReadingsVal("$NAME","_OFFSET",0) );;;; CommandDeleteReading(undef, $NAME."  consumption_WaterOfDaysDate-.*);;;; $date }\
\

attr JUDO_iSoft verbose 0

setstate JUDO_iSoft 2020-10-12 15:36:21 _DAY 1
setstate JUDO_iSoft 2020-10-12 15:36:49 _MONTH 09
setstate JUDO_iSoft 2020-06-11 22:58:40 _OFFSET -1
setstate JUDO_iSoft 2020-10-12 18:10:06 _YEAR 2021


Falls jemand noch spezielle Abfragen verwendet, sind die setstate readings am Ende für die defaults wichtig. Diese müssen natürlich vor der Abfrage entsprechend angepasst werden.

VG
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 03 Mai 2021, 17:56:54
Moin Christian,

habe einen neuen Thread zur i-softplus begonnen.

https://forum.fhem.de/index.php?topic=120735.msg1153096#msg1153096 (https://forum.fhem.de/index.php?topic=120735.msg1153096#msg1153096)

Mit fragenden Grüßen
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 03 Mai 2021, 21:42:00
Zitat von: Sunny am 03 Mai 2021, 17:56:54
habe einen neuen Thread zur i-softplus begonnen.
Okay, aber warum? Hier ist doch schon einer :-)

Zitat
leider habe ich seit ca. 2 Wochen nicht mehr die Möglichkeit Daten aus der i-softplus, per HTTPMOD (nach https://wiki.fhem.de/wiki/JUDO_iSoft_Plus) zuverlässig abzurufen.

Habt Ihr ähnliche Probleme?
Laut telefonischer Aussage des Supports, wäre ich nicht der einzige.

Ich habe folgende Versionen und monitore es nicht so wirklich, ob es Unterbrechungen gab.

version_HardwareVersion 5.10
version_SoftwareVersion 02.09.h


Ein kurzer SELECT über die letzten zwei Monate zeigt, dass ich jeden Tag readings bekommen habe.
Somit habe ich kein Problem mit der HTTPMOD Kommunikation.

VG
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 05 Mai 2021, 14:39:57
Zitat von: Sunny am 03 Mai 2021, 17:56:54
habe einen neuen Thread zur i-softplus begonnen.

https://forum.fhem.de/index.php?topic=120735.msg1153096#msg1153096 (https://forum.fhem.de/index.php?topic=120735.msg1153096#msg1153096)
Hallo Sunny,
da ja außer uns anscheinend keiner den i-softplus betreibt wäre meine Frage, hast Du mal die Kommunikation im Log angeschaut?
Bei Auffälligkeiten bitte als .txt Datei anhängen, da es sonst zu groß im Thread wird.

verbose 5
showBody 1
showError 1


Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 05 Mai 2021, 20:06:52
Moin Christian,

melde mich ausführlicher, wenn ich alles wieder am laufen habe.
Ich kann mir nicht vorstellen, das nur wir beide Sie per fhem nutzen, da mir der Support sagte, das mehre Menschen gerade Probleme hatten.
Bei lief alles jut, bis mein Kabelmodem vom Provider "tot" gelegt wurde... :-X
Nach dem dieses wieder lief fingen die Proble mit der i-softplus an.
Ich konnte weder per Android-App, fhem, https://www.myjudo.eu/ (https://www.myjudo.eu/) oder https://www.ju-control.app/ (https://www.ju-control.app/) auf meine i-softplus zugreifen.

Mit besten Grüßen
Sunny

PS: Hatte den Thread in dem Bereich erstellt, wo ich zuerst Infos gefunden. (Vor Deinem hier) Auch denke ich das dieses nicht direkt "Anfängerfragen" sind. ;)
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 06 Mai 2021, 10:15:56
Zitat von: Sunny am 05 Mai 2021, 20:06:52
Ich kann mir nicht vorstellen, das nur wir beide Sie per fhem nutzen, da mir der Support sagte, das mehre Menschen gerade Probleme hatten.
Bei lief alles jut, bis mein Kabelmodem vom Provider "tot" gelegt wurde... :-X
Nach dem dieses wieder lief fingen die Proble mit der i-softplus an.
Ich konnte weder per Android-App, fhem, https://www.myjudo.eu/ (https://www.myjudo.eu/) oder https://www.ju-control.app/ (https://www.ju-control.app/) auf meine i-softplus zugreifen.
Okay, das hört sich nach einem generellen Netzwerk Problem an. Solange der i-Soft sich nicht mit dem Hersteller und der App verbinden kann scheint die Registrierung bzw. wieder Anmeldung nicht zu klappen.
Das muss grundlegend funktionieren, da ansonsten auch die lokale Anmeldung nicht zugelassen wird. Bei meiner Installation zu beginn der Inbetriebnahme hat es da auch gehakt, sodass letztlich der Judo Service vor Ort war und die komplette Steuerungsplatine gegen eine neue mit anderer FW ausgewechselt hat. Dann lief die Anmeldung und danach konnte man auch lokal abfragen.

Somit wird es auf einen Judo Service Fall hinauslaufen.

Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Mai 2021, 10:58:11
Moin Christian,

ist kein Netzwerkproblem mit der i-Softplus und kein Servicefall. 8)
Habe es jetzt wieder am laufen. Leider nicht mehr so, wie es war...
Meine Vermutung ist, das der Traffic von Seiten des Serverbetreibers gedrosselt wurde, bzw. die Abrufintervalle und der gleichzeitig Zugriff verändert wurden.

Mit bestem Gruß
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Mai 2021, 11:16:26
Zitat von: Sunny am 12 Mai 2021, 10:58:11
ist kein Netzwerkproblem mit der i-Softplus und kein Servicefall. 8)
Habe es jetzt wieder am laufen. Leider nicht mehr so, wie es war...
Meine Vermutung ist, das der Traffic von Seiten des Severbetreibers gedrosselt wurde, bzw. die Abrufintervalle und der gleichzeitig Zugriff verändert wurden.
Das verstehe ich nicht, da die Abfrage der i-Softplus direkt lokal mit dem Gerät abläuft.
Nach der Registrierung kann man glaube ich sogar die IP im Router für's Internet sperren, jedoch klappt dann die App wohl nicht mehr.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Sunny am 12 Mai 2021, 12:58:21
Moin Christian,

vermutlich liegt es an:setstate iSoft 2021-05-12 12:51:47 tftStarted 1619589295734
setstate iSoft 2021-05-12 12:51:47 token xyz
setstate iSoft 2021-05-12 12:51:47 wtuType i-soft plus


Diese readings werden bei mir jetzt immer erneuert.

Ist aber nur eine Vermutung...

Mit bestem Gruß
sunny
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 12 Mai 2021, 13:25:49
Zitat von: Sunny am 12 Mai 2021, 12:58:21
vermutlich liegt es an:setstate iSoft 2021-05-12 12:51:47 tftStarted 1619589295734
setstate iSoft 2021-05-12 12:51:47 token xyz
setstate iSoft 2021-05-12 12:51:47 wtuType i-soft plus


Diese readings werden bei mir jetzt immer erneuert.
Davon wird nur das token im HTTPMOD verwendet, wenn Du Dir die URLs mal anschaust.
Und ja, das wird bei mir natürlich auch immer wieder aktualisiert, aber das passiert lokal zwischen FHEM und dem i-Softplus.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 09 August 2021, 09:01:03
EDIT: Ich war verwirrt und das ist nun doppelt drin, ich lass es aber mal stehen, damit man sehen kann, dass das hier noch verwendet wird :-)


Zitat von: Sunny am 09 Oktober 2020, 14:04:48
Leider habe ich auch noch keine elegante Idee, wie die Monatswerte genau erfasst werden können (Ohne 32 "cmd_'s")
Hallo Sunny,
es ist zwar schon ewig her, aber ich habe da wohl eine Rückmeldung vergessen :-)

Hier wäre meine Definition für die Monatswerte, bei der die Variabilität der Tagesanzahl berücksichtigt ist.
Beim Report ist zu beachten, dass man vorher _YEAR und _MONTH für den gewünschten Monat setzen muss.

attr JUDO_iSoft get38DeleteIfUnmatched 1
attr JUDO_iSoft get38Name Water_Monthly
attr JUDO_iSoft get38RegOpt g
attr JUDO_iSoft get38Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%

attr JUDO_iSoft get38-5Name consumption_WaterMonthlyByDay-01
attr JUDO_iSoft get38-6Name consumption_WaterMonthlyByDay-02
attr JUDO_iSoft get38-7Name consumption_WaterMonthlyByDay-03
attr JUDO_iSoft get38-8Name consumption_WaterMonthlyByDay-04
attr JUDO_iSoft get38-9Name consumption_WaterMonthlyByDay-05
attr JUDO_iSoft get38-10Name consumption_WaterMonthlyByDay-06
attr JUDO_iSoft get38-11Name consumption_WaterMonthlyByDay-07
attr JUDO_iSoft get38-12Name consumption_WaterMonthlyByDay-08
attr JUDO_iSoft get38-13Name consumption_WaterMonthlyByDay-09
attr JUDO_iSoft get38-14Name consumption_WaterMonthlyByDay-10
attr JUDO_iSoft get38-15Name consumption_WaterMonthlyByDay-11
attr JUDO_iSoft get38-16Name consumption_WaterMonthlyByDay-12
attr JUDO_iSoft get38-17Name consumption_WaterMonthlyByDay-13
attr JUDO_iSoft get38-18Name consumption_WaterMonthlyByDay-14
attr JUDO_iSoft get38-19Name consumption_WaterMonthlyByDay-15
attr JUDO_iSoft get38-20Name consumption_WaterMonthlyByDay-16
attr JUDO_iSoft get38-21Name consumption_WaterMonthlyByDay-17
attr JUDO_iSoft get38-22Name consumption_WaterMonthlyByDay-18
attr JUDO_iSoft get38-23Name consumption_WaterMonthlyByDay-19
attr JUDO_iSoft get38-24Name consumption_WaterMonthlyByDay-20
attr JUDO_iSoft get38-25Name consumption_WaterMonthlyByDay-21
attr JUDO_iSoft get38-26Name consumption_WaterMonthlyByDay-22
attr JUDO_iSoft get38-27Name consumption_WaterMonthlyByDay-23
attr JUDO_iSoft get38-28Name consumption_WaterMonthlyByDay-24
attr JUDO_iSoft get38-29Name consumption_WaterMonthlyByDay-25
attr JUDO_iSoft get38-30Name consumption_WaterMonthlyByDay-26
attr JUDO_iSoft get38-31Name consumption_WaterMonthlyByDay-27
attr JUDO_iSoft get38-32Name consumption_WaterMonthlyByDay-28
attr JUDO_iSoft get38-33Name consumption_WaterMonthlyByDay-29
attr JUDO_iSoft get38-34Name consumption_WaterMonthlyByDay-30
attr JUDO_iSoft get38-35Name consumption_WaterMonthlyByDay-31

attr JUDO_iSoft get381DeleteIfUnmatched 1
attr JUDO_iSoft get381MaxAge 86400
attr JUDO_iSoft get381Name Report_Water_Monthly
attr JUDO_iSoft get381RegOpt g
attr JUDO_iSoft get381Regex [ ](-?[0-9]{1,4})
attr JUDO_iSoft get381URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%

attr JUDO_iSoft get381-5Name consumption_report_WaterMonthlyByDay-01
attr JUDO_iSoft get381-6Name consumption_report_WaterMonthlyByDay-02
attr JUDO_iSoft get381-7Name consumption_report_WaterMonthlyByDay-03
attr JUDO_iSoft get381-8Name consumption_report_WaterMonthlyByDay-04
attr JUDO_iSoft get381-9Name consumption_report_WaterMonthlyByDay-05
attr JUDO_iSoft get381-10Name consumption_report_WaterMonthlyByDay-06
attr JUDO_iSoft get381-11Name consumption_report_WaterMonthlyByDay-07
attr JUDO_iSoft get381-12Name consumption_report_WaterMonthlyByDay-08
attr JUDO_iSoft get381-13Name consumption_report_WaterMonthlyByDay-09
attr JUDO_iSoft get381-14Name consumption_report_WaterMonthlyByDay-10
attr JUDO_iSoft get381-15Name consumption_report_WaterMonthlyByDay-11
attr JUDO_iSoft get381-16Name consumption_report_WaterMonthlyByDay-12
attr JUDO_iSoft get381-17Name consumption_report_WaterMonthlyByDay-13
attr JUDO_iSoft get381-18Name consumption_report_WaterMonthlyByDay-14
attr JUDO_iSoft get381-19Name consumption_report_WaterMonthlyByDay-15
attr JUDO_iSoft get381-20Name consumption_report_WaterMonthlyByDay-16
attr JUDO_iSoft get381-21Name consumption_report_WaterMonthlyByDay-17
attr JUDO_iSoft get381-22Name consumption_report_WaterMonthlyByDay-18
attr JUDO_iSoft get381-23Name consumption_report_WaterMonthlyByDay-19
attr JUDO_iSoft get381-24Name consumption_report_WaterMonthlyByDay-20
attr JUDO_iSoft get381-25Name consumption_report_WaterMonthlyByDay-21
attr JUDO_iSoft get381-26Name consumption_report_WaterMonthlyByDay-22
attr JUDO_iSoft get381-27Name consumption_report_WaterMonthlyByDay-23
attr JUDO_iSoft get381-28Name consumption_report_WaterMonthlyByDay-24
attr JUDO_iSoft get381-29Name consumption_report_WaterMonthlyByDay-25
attr JUDO_iSoft get381-30Name consumption_report_WaterMonthlyByDay-26
attr JUDO_iSoft get381-31Name consumption_report_WaterMonthlyByDay-27
attr JUDO_iSoft get381-32Name consumption_report_WaterMonthlyByDay-28
attr JUDO_iSoft get381-33Name consumption_report_WaterMonthlyByDay-29
attr JUDO_iSoft get381-34Name consumption_report_WaterMonthlyByDay-30
attr JUDO_iSoft get381-35Name consumption_report_WaterMonthlyByDay-31


VG
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 30 August 2021, 09:00:17
Hallo zusammen.

Ich habe folgende Beschreibung von JUDO bekommen "Fernbedienung des i-soft plus", falls da jemand interesse hat kann er sich melden.

Laut JUDO
ZitatDie JUDO i-soft safe, sowie die JUDO i-soft Safe Plus unterstützen lediglich die Anbindung über LAN, sowie die Fernauslese und Bedienung per JU-Control-App.

Gruß
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 21 September 2021, 16:05:46
Hallo zusammen,

wäre noch jemand an änderungen der isoft Plus Definition interessiert? Ich habe da noch einige Fehler gefunden und auch das "set**FollowGet" eingebaut.

Auch würde mich ein Austausch zu den Parametern interessieren, was man z.B. sinnvolles mit diesen Werten machen kann.

Max Durchfluss 0       <<<< gibt es da einen guten default Wert zu? Wann ist der aktiv
Entnahme 500 l <<<< Okay, wenn ich den Pool fülle geht nach der Menge der Wasserstop rein
Entnahmedauer 30 Min <<<< Sind 500 Liter in 30 Minuten Sinnvoll ? Oder zieht dann bei mir die Zeit vor der Menge
Urlaubsmodus 0       <<<< Was kann man damit erreichen und welche Werte sind Sinnvoll ?
Sleepmodusdauer 0       <<<< Und wofür ist das ?


VG
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: SimonHipp am 25 Oktober 2021, 21:17:54
Guten Abend zusammen,

ich habe seit den letzten Updates meiner Judo iSoft Plus das Problem, das Lokal keine Verbindung mehr hergestellt werden kann.
Jetzt habe ich versucht das auslesen an www.myjudo.eu anzubinden, nur komme ich nach command=get device data nicht mehr weiter.
Judo gibt keine Infos zwecks der JSON-Anbindung raus.
Kann mir jemand helfen und hat hierzu mehr infos, z.B. Stuerung des Aquastop usw.
Danke und Grüße
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 25 Oktober 2021, 21:26:42
Zitat von: SimonHipp am 25 Oktober 2021, 21:17:54
Guten Abend zusammen,

ich habe seit den letzten Updates meiner Judo iSoft Plus das Problem, das Lokal keine Verbindung mehr hergestellt werden kann.
Jetzt habe ich versucht das auslesen an www.myjudo.eu anzubinden, nur komme ich nach command=get device data nicht mehr weiter.
Judo gibt keine Infos zwecks der JSON-Anbindung raus.
Kann mir jemand helfen und hat hierzu mehr infos, z.B. Stuerung des Aquastop usw.
Danke und Grüße
Welche updates hast Du denn da gemacht?
Ich habe:

version_HardwareVersion 5.10
version_SoftwareVersion 02.09.h

Da habe ich an der isoft Plus noch nie ein Update gemacht.

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 03 November 2021, 11:10:26
Zitat von: SimonHipp am 25 Oktober 2021, 21:17:54
Guten Abend zusammen,

ich habe seit den letzten Updates meiner Judo iSoft Plus das Problem, das Lokal keine Verbindung mehr hergestellt werden kann.
Jetzt habe ich versucht das auslesen an www.myjudo.eu anzubinden, nur komme ich nach command=get device data nicht mehr weiter.
Judo gibt keine Infos zwecks der JSON-Anbindung raus.
Kann mir jemand helfen und hat hierzu mehr infos, z.B. Stuerung des Aquastop usw.
Danke und Grüße

Meine Anlage war vor einigen Wochen nicht mehr per App zu erreichen. Da ich einen Servicetermin hatte, sollte dies ebenfalls geprüft und behoben werden. Der Techniker spielte zwar eine neue Version auf, die Anlage war aber nach wie vor nicht zu erreichen.

Ich habe dann den Kontakt zum Judo-Support aufgenommen. Das Problem war bekannt und ich hätte einen erneuten Termin mit dem Service machen müssen. Nach einem Hinweis auf eine Tätigkeit in der IT wurden mir die Update-Filese und eine Beschreibung per Mail gesendet. Am Ende wurde protokolliert "Softwareaktualisierung durchgeführt, Version 1.0.64 installiert". In der App ist die Version unter "TFT-IO" zu finden. Interessanterweise wurde diese Version auch schon vorher in der Übersicht der Anlage unter "Anzeigemodul" angezeigt. Es geht also nicht um eine neue Version. In der Mail wird dies als "Neuinitialisierung" beschrieben, womit eine Neuverbindung zum Judo-Server erfolgen kann. Verbrauchsdaten gehen dabei verloren.

Die alte Judo-App konnte sich per IP vebinden, das funktioniert leider nicht mehr. Über die neue App (und Cloud) klappt es nun auf diese Weise zumindest wieder.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 04 November 2021, 15:34:44
Vielen Dank für den hinweis hier, ich habe das gleiche Problem.

Laut Service hat sich im Kommunikationsmodul (TFT Display Modul) durch einen Fehler in der FW etwas überschrieben, was die isoft Plus nicht mehr kommunizieren lässt.
Dies betrift insbesondere die kommunikation zu Judo, wodurch das gerät dann in der App als offline angezeigt wird.
Nach meinen Erinnerungen ist die lokale Anmeldung dann ebenfalls nicht möglich, da wohl die Registrierung gegenüber Judo geprüft wird.

Man bekommt dann von Judo ein neues Image für das TFT Modul, was jedoch auch ein Techniker machen würde.

Gruß
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 03 Dezember 2021, 19:25:30
Hallo zusammen,
ich habe nun die Wiederherstellung auch durchgeführt und das Portal wird wieder erreicht.
Lokale Verbindung auf Port 8000 und 8124 ist ebenfalls nicht mehr möglich.

Nun habe ich die mir bekannten Techniker angeschrieben, um den vorherigen Zustand, als mit lokaler Verbindung wieder zu ermöglichen.
Nur mit der App bringt mir das in der Haussteuerung nichts und das hatte ich auch nicht gekauft.

Ich halte Euch auf dem Laufenden
     Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 04 Dezember 2021, 16:51:57
Seit gestern hat sich etwas verändert.
1) auf Port 8000 wird nun wieder die API Beschreibung angezeigt

2) es erfolgt auch auf 8124 kommt eine Rückmeldung, aber der Login schlägt weiterhin fehl.

https://x.x.x.x:8124/?group=register&command=login&msgnumber=1&name=login&user=<Anmeldename>&password=<das Passwort>&role=customer
{"group":"register","command":"login","msgnumber":"1","name":"login","user":"xxxxxxxxx","password":"*","role":"customer","status":"error","data":"login failed"}

Im Wiki ist dazu ein Hinweis auf
Zitat
Bei Geräten neuerer Generation scheint es so zu sein, dass die Schnittstelle über Port 8124 nur den Login erlaubt, wenn bei der Geräteregistrierung die Datenschutzerklärung nicht akzeptiert werden. Falls also trotz korrekter Einstellungen "login failed" kommt, versuchen bei der Registrierung die Datenschutzeinstellungen zu ändern.

Nur leider steht da nicht, wie man das wieder ändern kann. Beim Update wird ja darauf hingewiesen keine neue Registrierung durchzuführen.

Mal schauen was der i-Soft Service dazu sagt.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: SebastianStorb am 09 Februar 2022, 16:38:57
Ich habe die i-soft SAFE+

Könnte mir jemand helfen, damit ich Befehle in die Anlage senden kann? Auslesen funktioniert teilweise. Die Anlage hat das Web Modul installiert. Zugriff über die Ports :8000 oder 8124 ist bei mir nicht möglich bzw. es kommt keine Antwort. Ich hatte bei JuDo aufgesprochen und keine Antwort erhalten.

Danke
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Februar 2022, 12:05:59
Zitat von: SebastianStorb am 09 Februar 2022, 16:38:57
Ich habe die i-soft SAFE+

Könnte mir jemand helfen, damit ich Befehle in die Anlage senden kann? Auslesen funktioniert teilweise. Die Anlage hat das Web Modul installiert. Zugriff über die Ports :8000 oder 8124 ist bei mir nicht möglich bzw. es kommt keine Antwort. Ich hatte bei JuDo aufgesprochen und keine Antwort erhalten.
Die Judo i-soft SAFE wird glaube ich über das WEB Portal abgefragt. Dafür gibt es einen anderen Thread

Gruß
  Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: SebastianStorb am 21 Februar 2022, 18:59:28
Danke für den Hinweis. Meinst Du diesen Thread?
https://forum.fhem.de/index.php/topic,115696.30.html (https://forum.fhem.de/index.php/topic,115696.30.html)

Dort scheint niemand mehr zu schreiben. Oder welchen meinst Du?
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 21 Februar 2022, 21:52:32
Zitat von: SebastianStorb am 21 Februar 2022, 18:59:28
Dort scheint niemand mehr zu schreiben. Oder welchen meinst Du?
Genau den, ist natürlich schade, wenn dort niemand mehr ist. Aber versuch es doch einfach mal, oder ping mal jemanden an, der einem isoft Save hat.
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 20 Mai 2022, 11:37:16
Hallo zusammen,
auch hier lebt noch jemand :-)
Durch einen Post bei der i-soft safe wollte ich nochmal versuchen mit meiner i-soft Plus zu sprechen :-)

Hier schon mal ein externer Link (https://blog.muwave.de/2017/06/monitoring-and-controlling-a-judo-i-soft-plus-water-softening-device-via-lan/), wo die Kommunikation beschrieben wird.
Nur gab es ja leider das Problem mit der Firmware, nachdem ich mich nicht mehr lokal anmelden kann.

VG
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 15 August 2022, 13:04:13
Hallo zusammen,
nach nun ziemlich zäher Diagnose zur Kommunikation mit dem JUDO isoft Plus habe ich jetzt vom JUDO Service ein anderes TFT Display bekommen.
Über das Display habe ich dann meinen Standort und den bisherigen Benutzer mit Passwort eingetragen.
Anschließend habe ich noch im wegen der neuen MAC Adresse im Router wieder den alten Namen und die alte IP-Adresse zugeordnet. Nach einem Power Off/On
des judo-isoft plus funktionierte die Netzwerkkommunikation dann wieder fehlerfrei.

Man kann das zuerst im Browser testen

https://192.168.178.xxx:8124/?group=register&command=login&msgnumber=1&name=login&user=<User Name>&password=<Passwort&role=customer
>>> es kommt eine Rückmeldung mit dem Token

https://192.168.178.xxx:8124/?group=register&command=connect&msgnumber=2&token=<hier kommt das Token hin>&parameter=i-soft%20plus&serial%20number=<Seriennummer>
>>> Die Session wird bestätigt
>>> Bis hier hatte es bei mir nach dem Update des Judo Zertifikates schon einige Zeit funktioniert.

## Das wären zwei Abfragen für die Kommunikation
## Wenn hier keine Rückmeldung kommt besteht das Problem immer noch
https://192.168.178.xxx:8124/?group=version&command=software%20version&msgnumber=3&token=<hier kommt das Token hin>
https://192.168.178.xxx:8124/?group=waterstop&command=standby&msgnumber=4&token=<hier kommt das Token hin>


Sollte es noch jemanden geben, der solch ein Problem hat, dem könnte ich den Ansprechpartner per PN zusenden. Bei JUDO habe ich bereits angekündigt, dass es wohl noch mehrere Anwender mit Problemen gibt.

Mein aktuelles Device sieht jetzt wie im Anhang aus und man könnte es jetzt noch weiter verfeinern. Auch einige kryptische Reports habe ich bereits in readings eingepasst.
Achtung, bevor man das Display auswechselt, sollte man den gesamt Wasser Zähler notieren, bzw. diesen in einem userreading mit monotonic in ein zweites reading umwandeln.

Hier z.B. die drei Stündigen Verbräuche inklusieve der Tagessumme

consumption_WaterDaily3Hour-01 4
consumption_WaterDaily3Hour-02 0
consumption_WaterDaily3Hour-03 11
consumption_WaterDaily3Hour-04 21
consumption_WaterDaily3Hour-05 7
consumption_WaterDaily3Hour-06 -1
consumption_WaterDaily3Hour-07 -1
consumption_WaterDaily3Hour-08 -1
consumption_WaterDailySumme 43


Über ein Wasser_Schedule aktualisiere ich dann regelmäßig die Verbrauchsdaten, da es ansonsten etwas umständlich ist all diese Einzelabfragen zu tätigen. Jede kleine Aktion ist bei dem judo-isoft plus ein separter Aufruf innerhalb der HTTP Session :-(

VG
   Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 22 August 2022, 08:00:41
Hallo zusammen,
im userreading war noch ein Fehler und da es schon so lange her ist kommt hier mal wieder die kmplette RAW Definition.
Die Gesamtzähler verwenden jetzt monotonic, da bei mir das TFT schon mehrfach ausgetauscht wurde.

Version 2022.08.22 08:00
Ist wieder hier abgelegt. (https://forum.fhem.de/index.php/topic,112147.msg1064693.html#msg1064693)

VG
    Christian
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 27 August 2022, 19:19:52
Hallo Christian,

ich habe mit Deinen RAW ein neues Device angelegt.
Nun bekomme ich immer einen Fehler: status error / data not logged in

Mit meinem alten Device (dieses hat schon ein Token) gibt es weiterhin kein Problem.
Zum Testen habe ich das alte Device kopiert (copy) und auch damit bekomme ich den Fehler und damit kein Token.

Es liegt also am initialen Anmelden und der Vergabe des Token.

Hast Du eine Idee, woran das liegen kann und wie ich das Ganze eingrenzen kann?

Danke vorab und schöne Grüße
Dirk
Titel: Antw:HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 06 Dezember 2022, 15:34:18
Zitat von: Dirk070 am 27 August 2022, 19:19:52
ich habe mit Deinen RAW ein neues Device angelegt.
Nun bekomme ich immer einen Fehler: status error / data not logged in

Mit meinem alten Device (dieses hat schon ein Token) gibt es weiterhin kein Problem.
Zum Testen habe ich das alte Device kopiert (copy) und auch damit bekomme ich den Fehler und damit kein Token.

Es liegt also am initialen Anmelden und der Vergabe des Token.

Hast Du eine Idee, woran das liegen kann und wie ich das Ganze eingrenzen kann?
Hallo Dirk,
Hast Du beim Device das Passwort und den User Namen auch gesetzt?
Evenbtuell aus dem RAW des alten Devices die setstate ind RAW des neuen Devices übernehmen und dann ausführen.
Ansonsten erstmal verbose 5 und ins Log schauen.

VG   Chrstian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 28 April 2023, 15:06:10
Moin zusammen,

ich musste mal wieder Salz nachfüllen und habe daraufhin eine kleine Änderung in der HTTPMOD Kontiguration vorgenommen. Es war ein 25 kg Sack und bei der Eingabe für Salt_Quantity wurde die Angabe in g benötigt.

Mit set46IExpr wird es nun in kg angenommen. Bei der Abfrage wurde es bereits in Prozent umgerechnet, was sich recht leicht lesen lässt.
Somit füllt man nun kg nach und bekommt den Füllstand dann in % angezeigt.
Aber Achtung, wenn man nachfüllt wird dies auf den alten Bestand addiert, wer also korrigieren möchte, muss hier dann mehr/weniger angeben,
oder über das Display den Salzfüllstand zurücksetzen und dann die korrekte Menge wieder eintragen, was dann auch wieder über FHEM geht.
In den Behälter passen maximal 50 kg Salz.

Hier die geänderten Attribute für das set und ein reading für die Füllmenge in kg
attr JUDO_iSoft set46FollowGet Salt_Quantity
attr JUDO_iSoft set46IExpr $val*1000
attr JUDO_iSoft set46Name Salt_Quantity
attr JUDO_iSoft set46URL https://%JUDO_ipaddress%:8124/?group=consumption&command=salt%20quantity&msgnumber=1&token=%token%&parameter=$val

attr JUDO_iSoft reading451Name consumption_SaltQuantityIn_kg
attr JUDO_iSoft reading451OExpr int($val/1000)
attr JUDO_iSoft reading451Regex "command":"salt quantity","data":"(\d+)","group":"consumption"

VG Christian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 08 Dezember 2023, 15:12:33
Hallo zusammen,

das httpmod-Modul für die JUDO-Anlage habe ich schon länger im Betrieb und alles läuft gut soweit.
Kürzlich habe ich mich aber mal wieder gewundert, dass wir in der Standard-Konfiguration des Moduls die (Fehler-)Meldungen nicht sehen. Der Status gibt ja keine Auskunft über aufgetretene Fehler (zumindest nicht bei mir).
Dafür habe ich einen Request ergänzt, der die "event list" holt. Wenn man line=0 setzt holt er offenbar immer die letzte Meldung (max_lines):
https://%JUDO_ipaddress%:8124/?group=state&command=event%20list&line=0&offset=0&token=%token%

Die gelieferten Events liefern bis zu vier Komma-getrennte Werte, wobei das erste der Unix-Zeitstempel ist, gefolgt von vom Message-Typ, einem mir unbekannten Wert und ggf. einem Konfigurationsparameter.
Beispiel:
1701958287, 40, 1968722, 30
1701958287=07.12.23 15:11:27
40= Wasserstopp geschlossen, maximal zulässige Entnahmezeit xx Minuten
1968722=Der vierte Wert gibt wohl den aktuellen Stand des totalen Wasserverbrauchs beim Event wieder
30= 30 Minuten

Kennt jemand das gesamte Mapping der Meldungen bzw. eine einfachere Lösung dafür?
Ich habe schon einige Meldungsmappings gefunden im Internet, die aber irgendwie nicht zu meinen Erfahrungen passen.
Ich konnte bisher 40,42,71 und 2 empirisch nachvollziehen. Deshalb könnten auch die anderen 1 bis 14 passen.


1:Regenerationsantrieb defekt
2:Solestand im Salzbehälter hoch
3:Fehlfunktion beim Nachfüllen
4:Wasserstoppantrieb defekt
5:VSV defekt
6:Leitwertmessung defekt
7:Temperaturmessung defekt
8:Weichwasserzähler defekt
9:Rohwasserzähler defekt
10:RH < 2x MH
11:Lsu oder Lgnd wird nicht erkannt
12:Lso immer nass
13:Doppelfehler: Lsu wird nicht erkannt und Lso dauernd nass
14:RS 485 Verbindungsproblem

40:Wasserstop geschlossen, maximal Entnahmezeit <<Parameter 4 in Minuten>>
42:Mengenüberschreitung <<Parameter 4 in Liter>>
71:Salzmangel

Weiß jemand, woran ich sehe, ob die Meldung noch akut ist (Meldung wird noch auf dem Geräte-Display) angezeigt und welche bereits bestätigt wurden?

Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 18 Dezember 2023, 11:37:37
Zitat von: fsch am 08 Dezember 2023, 15:12:33Weiß jemand, woran ich sehe, ob die Meldung noch akut ist (Meldung wird noch auf dem Geräte-Display) angezeigt und welche bereits bestätigt wurden?
Hallo,
ich habe diese Frage mal per Mail an meine Judo Service Kontakte geschickt, bisher habe ich da immer eine Rückmeldung bekommen.

VG   Christian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 19 Dezember 2023, 00:20:51
Hi Christian,

vielen Dank, bin gespannt.

Die Messages in der Eventlist werden offenbar automatisch gelöscht, wenn ihr Alter 6 Monate erreicht.
Damit ändern sich dann auch die Messagenummern der noch jüngeren Einträge (rücken alle hoch).
Ich merke mir daher separat den UNIX-Timestamp der letzten (jüngsten) Message.
Damit kann ich dann erkennen, ob eine neue Message gekommen ist.

Gruß
Frank
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 19 Dezember 2023, 09:21:00
Hallo zusammen,

nochmal zur Einordnung, weil es vielleicht auch andere betrifft:
Bei mir ist kürzlich meine Hebeanlage ausgefallen, die eigentlich die verbrauchte Sole in einen höher liegenden Abfluss pumpen soll.
Dadurch ist dann der Flüssigkeitspegel im Salzbehälter immer weiter angestiegen, bis die JUDO-Anlage dann einen Fehler (EVENT) geworfen hat:
2:Solestand im Salzbehälter hoch

Der Status in der Geräte-API wurde aber weiterhin als "OK" geliefert, obwohl die Anlage erfreulicherweise diesen unerfreulichen Zustand bemerkt hat.
Der Status gibt dann wohl keinen Hinweis auf den Status der Anlage (wie ich gedacht habe), sondern bezieht sich nur auf die API-Abfrage.
Auch an anderen Remote-Parametern konnte ich diese Schieflage nicht erkennen und habe es erst gesehen als ich mehr zufällig die (schwer zugängliche) Anlage geprüft habe.
Aus diesem Grund ist diese "event list" spannend, mit der tatsächlich wohl alle Display-Meldungen über die API auslesen werden können.
Und Fehlerzustände kann es wohl einige geben, wenn man sich die Meldungsliste so ansieht.

Das Ganze wieder flott zu machen, hat mich übrigens einige Arbeit gekostet, da es mit einem bloßen Absaugen der überschüssigen Flüssigkeit nicht getan war. Die Anlage hat dann immer wieder "71:Salzmangel" gemeldet (trotz vollem Salzbehälter), bis ich den Salzbehälter komplett geleert und gereinigt und einige Resets durchgeführt hatte.
Jetzt läuft wieder alles reibungslos so wie ich es seit Jahren gewohnt bin.

Gruß
Frank



Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 19 Dezember 2023, 10:29:07
Hallo Frank,
offiziel muss wohl einmal im Jahr eine Wartung gemacht werden, bei der auch der Salzbehälter gereinigt wird ;-)
VG   Christian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 19 Dezember 2023, 18:05:41
Zitat von: ch.eick am 19 Dezember 2023, 10:29:07Hallo Frank,
offiziel muss wohl einmal im Jahr eine Wartung gemacht werden, bei der auch der Salzbehälter gereinigt wird ;-)
VG  Christian

Richtig und das Sieb am Ansaugschlauch im Salzbehälter wird i.d.R. ersetzt (ca. 10€).
Wartung wurde gerade durchgeführt  ;)
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 20 Dezember 2023, 13:20:55
Hi Ihr alle,

ja, das weiß ich doch und mache das auch ... und den Leitwert-Sensor tausche ich alle zwei Jahre, weil er nach einem Jahr idR. noch gar nicht so schlecht aussieht.
Wie beschrieben gab es jetzt aber außer der Reihe den Vorfall, dass die verbrauchte Sole nicht abgesaugt wurde und sich aufstaute.
Somit musste ich dann nochmal ran und das ausgerechnet als auch noch der Salzbestand recht hoch war.
Mit der Wartung wartet man ja normalerweise ab, bis der Salzbehälter ohnehin leer ist.

Gruß
Frank
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 22 Dezember 2023, 14:26:10
Zitat von: fsch am 08 Dezember 2023, 15:12:33Dafür habe ich einen Request ergänzt, der die "event list" holt. Wenn man line=0 setzt holt er offenbar immer die letzte Meldung (max_lines):
https://%JUDO_ipaddress%:8124/?group=state&command=event%20list&line=0&offset=0&token=%token%
Hallo Frank,
hast Du da noch andere Kombinationen von line und offset identifizeirt?
Bei mir sind wohl nur zwei Events vorhanden, die ich mit line [0|1] abfragen kann, bei offset fehlt mir das empirische Verständnis :-)

Interessant wäre die letzte Melding, oder die letzten 5 in einer Abfrage, wenn das geht.

VG   Christian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 28 Dezember 2023, 10:08:10
Hi Christian,

... bin jetzt nach den tollen Tagen wieder online ;-)

Ich habe derzeit 106 Events in der Liste und kann mit line=x&offset=0 genau den x-ten Event holen. Das offset wird offenbar auf line hinzuaddiert, sodass man mit line=x&offset=y das (x+y)-te Event holt. Das offset kann insbesondere auch negativ sein. Also liefert line=100&offset=-1 das 99-te Event.
Wir hatten ja schon gesehen, dass line=0&offset=0 genau das jüngste Event (höchste Messagenummer) liefert.
Tatsächlich kann man darauf negative offsets anwenden.
Die letzten fünf Events müsste man somit also durch fünf einfache Anfragen holen können ohne separate Arithmetik, weil die Liste ja ständig wachsen (neues Event) oder schrumpfen (Housekeeping Event-Alter 6 Monate) kann:
line=0&offset=0
line=0&offset=-1
line=0&offset=-2
line=0&offset=-3
line=0&offset=-4

Wenn der offset den Anfang der Liste überspringt, liefert die API übrigens immer das erste Event.
Bei Deinen zwei Events würde bei line=0&offset=-4 also das erste Event geliefert werden.
Hier müsste man ggf. schauen, wie viele überhaupt vorhanden sind (max lines), um es schön zu machen.

Gruß
Frank





Gruß
Frank
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 28 Dezember 2023, 11:55:46
Zitat von: fsch am 28 Dezember 2023, 10:08:10< snip >
Wenn der offset den Anfang der Liste überspringt, liefert die API übrigens immer das erste Event.
Bei Deinen zwei Events würde bei line=0&offset=-4 also das erste Event geliefert werden.
Hier müsste man ggf. schauen, wie viele überhaupt vorhanden sind (max lines), um es schön zu machen.
Hallo Frank,
hast Du bereits readings erstellt, die die Eventliste aufnehmen?

VG  Christian
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 01 Januar 2024, 23:31:22
Hi Christian,

bisher lese ich immer nur das aktuelle Event aus und das alle 5 Minuten:
attr JUDO_iSoft get19Name event
attr JUDO_iSoft get19Poll 1
attr JUDO_iSoft get19PollDelay 300
attr JUDO_iSoft get19URL https://%JUDO_ipaddress%:8124/?group=state&command=event%20list&line=0&offset=0&token=%token%

Dabei wird dann automatisch das Reading "event-list" aus dem Response angelegt, was die in einem früheren Post beschriebene Struktur hat.
z.B: event-list 1704097964, 42, 2007928, 600
Das verteile ich dann mit userReadings auf folgende Readings. Diese fangen alle mit "event" an, sodass alles zum Event untereinander steht.

event-message Mengenüberschreitung 600l
event-time 2024-01-01 09:32:44
event-watergauge 2007928

Meine Definition der userReadings sieht folgendermaßen aus:

saltRangeInWeeks:salt-range.* {int((ReadingsVal("JUDO_iSoft","salt-range",0)/7))}
,event-time:event-list.* {ReadingsVal("JUDO_iSoft","event-list",0)=~/(\d+),.*/i?strftime "%F %X", localtime($1):"Zeitstempel nicht vorhanden"}
,event-message:event-list.* {
ReadingsVal("JUDO_iSoft","event-list",0)=~/\d+,\s*(\d+).*/i?
$1 eq "1"?"Störung! Regenerationsantrieb defekt":
$1 eq "2"?"Störung! Solestand im Salzbehälter hoch":
$1 eq "3"?"Fehlfunktion beim Nachfüllen":
$1 eq "4"?"Wasserstoppantrieb defekt":
$1 eq "5"?"VSV defekt":
$1 eq "6"?"Leitwertmessung defekt":
$1 eq "7"?"Temperaturmessung defekt":
$1 eq "8"?"Weichwasserzähler defekt":
$1 eq "9"?"Rohwasserzähler defekt":
$1 eq "10"?"RH < 2x MH":
$1 eq "11"?"Lsu oder Lgnd wird nicht erkannt":
$1 eq "12"?"Lso immer nass":
$1 eq "13"?"Doppelfehler: Lsu wird nicht erkannt und Lso dauernd nass":
$1 eq "14"?"RS 485 Verbindungsproblem":
$1 eq "40"?"Wasserstopp geschlossen, maximal zulässige Entnahmezeit ".(ReadingsVal("JUDO_iSoft","event-list",0)=~/\d+,\s*\d+,\s*\d+,\s(\d+).*.*/i?$1." Minuten überschritten":""):
$1 eq "41"?"Wasserstopp geschlossen, maximal zulässiger Wasserdurchfluss von ".(ReadingsVal("JUDO_iSoft","event-list",0)=~/\d+,\s*\d+,\s*\d+,\s(\d+).*.*/i?$1." l/h überschritten":""):
$1 eq "42"?"Wasserstopp geschlossen, maximal zulässige Wassermenge ".(ReadingsVal("JUDO_iSoft","event-list",0)=~/\d+,\s*\d+,\s*\d+,\s(\d+).*.*/i?$1." l überschritten":""):
$1 eq "45"?"Wasserstopp manuell geschlossen":
$1 eq "70"?"Reichweite der Salzmenge ist gering":
$1 eq "71"?"Achtung Salzmangel!":
"Eventtyp unbekannt":"Struktur unbekannt"}
,event-watergauge:event-list.* {ReadingsVal("JUDO_iSoft","event-list",0)=~/\d+,\s*\d+,\s*(\d+).*/i?$1:""}

Die Events kommen m.E. nicht so häufig, dass man sich mehrere Meldungen ansehen müsste.
Ich habe noch ein separates Notify, das mir eine Push-Nachricht sendet, wenn ein neues Event kommt. Dieses Notify speichert dann den Zeitstempel (event-time) des gemeldeten Events in einem Dummy, um nicht dasselbe Event mehrfach zu pushen.
Wenn man die letzten fünf Events zeigen wollte, müsste man die obigen Definitionen duplizieren mit offset=-1 (usw.) in der URL und entsprechend weiteren userReadings.
Das finde ich aber etwas aufwändig für den Zweck, weil die alten Events eigentlich gar nicht spannend sind.

Gruß
Frank
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: fsch am 03 Januar 2024, 16:17:45
Hallo zusammen,

heute hatte ich noch ein anderes Thema mit dem JUDO-Modul.
Irgendwie hat sich das Modul verschluckt und keine Werte mehr angezeigt. Die meisten Readings standen dann auf "not connected", weil wohl irgendwann mal der Login funktioniert hat, aber der connect nicht. Alle requests sind dann mit einem Token ausgeführt worden, das (noch) nicht connected war.
Lösen konnte ich das, indem ich "not connected" im Attribut reAuthRegex ergänzt habe:
attrib JUDO_iSoft reAuthRegex (no token)|(not logged in)|(not connected)
Dieses Attribut gibt wohl an, wann ein neues Login/Connect durchgeführt werden muss.
Hier sollte man auch den Status "not connected" berücksichtigen, um nicht auf "not logged in" oder "no token" warten zu müssen.

Gruß
Frank
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 04 Januar 2024, 11:19:29
Zitat von: fsch am 03 Januar 2024, 16:17:45< snip >
Lösen konnte ich das, indem ich "not connected" im Attribut reAuthRegex ergänzt habe:
attrib JUDO_iSoft reAuthRegex (no token)|(not logged in)|(not connected)
Hallo Frank,
ich habe da sogar zusätzlich noch einen String identifiziert.
attrib JUDO_iSoft reAuthRegex (no token)|(not logged in)|(not connected)|(Connection refused)
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 06 Januar 2024, 14:25:05
Zitat von: ch.eick am 06 Dezember 2022, 15:34:18
Zitat von: Dirk070 am 27 August 2022, 19:19:52ich habe mit Deinen RAW ein neues Device angelegt.
Nun bekomme ich immer einen Fehler: status error / data not logged in

Mit meinem alten Device (dieses hat schon ein Token) gibt es weiterhin kein Problem.
Zum Testen habe ich das alte Device kopiert (copy) und auch damit bekomme ich den Fehler und damit kein Token.

Es liegt also am initialen Anmelden und der Vergabe des Token.

Hast Du eine Idee, woran das liegen kann und wie ich das Ganze eingrenzen kann?
Hallo Dirk,
Hast Du beim Device das Passwort und den User Namen auch gesetzt?
Evenbtuell aus dem RAW des alten Devices die setstate ind RAW des neuen Devices übernehmen und dann ausführen.
Ansonsten erstmal verbose 5 und ins Log schauen.

VG   Chrstian

Hallo Christian,

ja, PW und User sind gesetzt.
Hättest Du einen Tipp, zunächst minimalistisch nur den Connect mit dem Token zu testen?

Danke und schöne Grüße
Dirk
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 06 Januar 2024, 14:43:05
Zitat von: Dirk070 am 06 Januar 2024, 14:25:05ja, PW und User sind gesetzt.
Hättest Du einen Tipp, zunächst minimalistisch nur den Connect mit dem Token zu testen?
Hallo Dirk,
da die Verbindung sich bei einem get automatisch selber aufbaut könntest Du einfach mal ein "get JUDO_iSoft Waterstop_Valve" durchführen.
Beim httpbody sollte dann so etwas kommen und natürlich das reading waterstop_State gesetzt werden.
{"command":"valve","data":"opened","group":"waterstop","msgnumber":"1","status":"ok","token":"275a1baa800e7969da4e1f70e615105215a05b016aa23d01d621faedd39d03ea","wtuType":"i-soft plus","serial number":"96586","tftStarted":1665641837385}
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 10 Januar 2024, 15:35:12
Danke Dir.

Ich habe auf dem Port 8000 (über HTTP) eine Testseite gefunden. Auch dort bekomme ich den Fehler mit meinen Daten.
Es muss also an der Judo liegen, ich muss mal schauen, ob man sich nochmal neu registrieren kann. Hat da jemand Erfahrung?
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: ch.eick am 10 Januar 2024, 15:52:50
Zitat von: Dirk070 am 10 Januar 2024, 15:35:12Danke Dir.

Ich habe auf dem Port 8000 (über HTTP) eine Testseite gefunden. Auch dort bekomme ich den Fehler mit meinen Daten.
Es muss also an der Judo liegen, ich muss mal schauen, ob man sich nochmal neu registrieren kann. Hat da jemand Erfahrung?
Es gab mal einen Bug im TFT Monitor, der mit dem Judo Support bis hin zum Austausch führte.
Am besten setzt Du Dich damit direkt mit dem Support in Verbindung.
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 15 Januar 2024, 13:03:10
Lösung des Problems:

Über die Seite auf dem Port 8000 habe ich einen neuen User angelegt.

0_create_user, hier role "customer", user, PW, title, firstname, lastname, email, country, zipcode, city, street, streetnumber entsprechend füllen.

Anschließend 3_show zeigt die Daten und das Token.
Mit 6_connect kann dann zum Gerätetyp "i-soft plus" und der Gerätenummer die Verbindung hergestellt werden.

Mit dem neuen User funktioniert dann auch FHEM  :)
Titel: Aw: HTTPMOD - JUDO isoft Plus
Beitrag von: Dirk070 am 17 Januar 2024, 11:42:57
Eine generelle Frage in die Runde (alle Änderungen wurden direkt an der Anlage vorgenommen, es ist kein FHEM-Problem). An der isoft lässt sich ja die Härte kalibrieren (durch Titration).

Ich hatte 8 eingestellt, raus kamen 5. Also Wert in der Kalibrierung am Gerät eingestellt und alles fein.

Dann Wert von 8 auf 6 geändert und die kleine umrandete 2 oben im Display ist weg, also die Kalibrierung ist futsch.
Zurück auf 8, Titration zeigt wieder den abweichenden Härtegrad.

Aktuell stelle ich einfach die Werte anders ein, aber das Verhalten ist doch merkwürdig.
Wie ist das bei Euch?