Hauptmenü

HTTPMOD - JUDO isoft Plus

Begonnen von ch.eick, 15 Juni 2020, 19:50:38

Vorheriges Thema - Nächstes Thema

ch.eick

EDIT:
2023.04.28 - Die Salt_Quantity wird jetzt in kg beim set angegeben und zusetzlich auch in kg beim get
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, 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 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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#1
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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Dirk070

#2
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


ch.eick

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Übrigens, das Wiki ist nicht von mir. Ich habe die readings nur erweitert und auf den iSoft Plus optimiert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Dirk070

#5
Hallo Christian,

Danke für die Rückmeldung  :)

Ich hatte mich durch das Wiki 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

ch.eick

#6
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 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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
ich habe noch einige Beispiele ergänzt: Beispielanwendung

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Sunny

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
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

ch.eick

#9
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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

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"
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Sunny

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
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

ch.eick

#12
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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#13
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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Sunny

#14
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>
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl