Hauptmenü

HTTPMOD - JUDO isoft Plus

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

Vorheriges Thema - Nächstes Thema

ch.eick

#45
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.
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

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

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
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,

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

#49
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.
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.

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

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
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,

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

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 ;-)
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,

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

#55
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
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,

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

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

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

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

maltejahn

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