Hallo zusammen,
durch eine Anfrage von Dio habe ich mich mit der Battery_TimeControl nun weiter beschäftigt.
Beim set hat man nun die Möglichkeit
- jeden Battery_TimeControl Tag separat zu setzen
- jeder Tag wird hierbei in Stunden Blöcken innerhalb eines readings angezeigt
- beim set kann man [0-2] auswählen, was dann wiederum einheitlich 96 mal geschrieben wird
- Die Tage sind mit der Nummerierung im FHEM von [0-6] durchnummeriert, damit sie erstens sortiert sind
und zweitens aus Funktionen direkt addressiert werden können (Regex)
- Es ist im set ein Text auszuwählen, was dann versucht ein reading zu diesem Tag zu lesen
ist das reading nicht vorhanden wird wiederum 96 mal 0 geschrieben, was einem abschalten innerhalb des Gerätes gleich kommt.
Battery_TimeControl_0_So 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Battery_TimeControl_1_Mo 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
...
Battery_TimeControl_6_Sa 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- Das jeweilige reading kann jedoch auch aus einem anderen Device in dieses geschrieben werden, was eine Formatierung des gesamten Strings mit [0-2] durch eine Funktion ermöglicht.
- Sollte man die Battery_TimeControl mal wieder deaktivieren, dann ist zu beachten, dass der Plenticore die letzte Konfiguration der Zeiten gespeichert hat.
Bei einem erneuten Aktivieren ist die alte Konfiguration wieder im Plenticore gültig.
- Leider kann man im HTTPMOD nicht mit setList und readingList arbeiten :-(
- Achtung, das get24* hat sich geändert, weil die Tage nicht korrekt eingelesen wurden und weil es jetzt formatiert wird
- Bedeutung der Werte [0-2]
0 Keine Einschränkung (Farbe Weiss)
1 Batterieladung gesperrt, Entladung bei Hausbedarf erlaubt (Farbe Azurblau)
2 Batterieentladung gesperrt, Ladung bei Energieüberschuss erlaubt (Farbe Lila)
- Sollte man nur die interne Steuerung aktiv haben, so lassen sich diese Optionen trotzdem nutzen
1. Möchte man z.B. den MaxSOC begrenzen
Hierbei kann man im WR_1 den Act_state_of_charge verwenden und bei z.B. SOC 80 % ab diesem Zeitpunkt die Batterieladung sperren ( 1 )
Die Freigabe sollte dann mit einer gewissen Hysterese beim Act_state_of_charge erfolgen
2. Möchte man auf jeden Fall eine gewisse Reserve im Speicher behalten, wäre Batterieentladung gesperrt ( 2 ) eine Möglichkeit
3. Bei einem zwei Tarif Model für den Zähler könnte man das ebenfalls anwenden, um einen entsprechenden Rythmus zu bekommen, der
dann auch Tageweise wechseln kann.
- Für eine Steuerung der gewünschten Modi wird sicherlich die Planung der Zeiten eine Herausforderung sein,
die dann über eine Funktion mit der Maskierung der 96 Zeitabschnitte übertragen werden müsste.
Hierfür habe ich die readings Battery_TimeControl_[0-6]_[So-Sa] eingebaut,
die dann das Ergebnis der Planung speichern und mit einem "set WR_1_API 24__[0-6]_Battery_TimeControl_[So-Sa] Battery_TimeControl_[0-6]_[So-Sa]" zum Plenticore
übertragen. Ein einheitliches setzen für den ganzen Tag ist dann mit "set WR_1_API 24__[0-6]_Battery_TimeControl_[So-Sa] [0-2]" möglich.
- Wichtig ist das die "Intelligente Speicher Steuerung" deaktiviert ist sonst spielt es keine Rolle ob die "Zeitgesteuerte Batterienutzung" aktive ist oder nicht.
Somit gibt es dort eine Wechselwirkung zwischen den Optionen und die "Intelligente Speicher Steuerung" überlagert die Zeitsteuerung. (Dank an Dio)
Und hier nun die Attribute für das RAW, die readings sind jedoch nicht dabei und müssten bei Bedarf nach dem obigen Muster erstellt werden.
Wenn Ihr noch alte [set|get]24* Attribute haben solltet, dann wäre es gut diese vorher zu entfernen.
Und denkt daran, eine Sicherung ist auch immer gut :-)
attr WR_1_API get24-1Name Battery_TimeControl_5
attr WR_1_API get24-1OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-2Name Battery_TimeControl_1
attr WR_1_API get24-2OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-3Name Battery_TimeControl_6
attr WR_1_API get24-3OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-4Name Battery_TimeControl_0
attr WR_1_API get24-4OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-5Name Battery_TimeControl_4
attr WR_1_API get24-5OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-6Name Battery_TimeControl_2
attr WR_1_API get24-6OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-7Name Battery_TimeControl_3
attr WR_1_API get24-7OExpr my @x = ( $val =~ m/.{4}/g );; my $x = $x[0];;for(my $i = 1;;$i < @x;;$i++) { $x = $x." ".$x[$i]};; $x
attr WR_1_API get24-8Name Battery_TimeControl
attr WR_1_API get24Header01 authorization: Session %auth_sessionId%
attr WR_1_API get24Header02 Content-type: application/json, Accept: application/json, Connection: keep-alive
attr WR_1_API get24JSON .._value
attr WR_1_API get24Name 24_Battery_TimeControl
attr WR_1_API get24URL http://%IP-WR%/api/v1/settings/devices:local/Battery:TimeControl:Enable,Battery:TimeControl:ConfMon,Battery:TimeControl:ConfTue,Battery:TimeControl:ConfWed,Battery:TimeControl:ConfThu,Battery:TimeControl:ConfFri,Battery:TimeControl:ConfSat,Battery:TimeControl:ConfSun
attr WR_1_API set2400Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:Enable","value":"$val"}]}]
attr WR_1_API set2400FollowGet 24_Battery_TimeControl
attr WR_1_API set2400Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2400Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2400Hint 0,1
attr WR_1_API set2400Method PUT
attr WR_1_API set2400Name 24_00_Battery_TimeControl
attr WR_1_API set2400URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2401Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfSun","value":"$val"}]}]
attr WR_1_API set2401FollowGet 24_Battery_TimeControl
attr WR_1_API set2401Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2401Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2401Hint 0,1,2,Battery_TimeControl_0_So
attr WR_1_API set2401IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2401Method PUT
attr WR_1_API set2401Name 24__0_Battery_TimeControl_So
attr WR_1_API set2401URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2402Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfMon","value":"$val"}]}]
attr WR_1_API set2402FollowGet 24_Battery_TimeControl
attr WR_1_API set2402Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2402Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2402Hint 0,1,2,Battery_TimeControl_1_Mo
attr WR_1_API set2402IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2402Method PUT
attr WR_1_API set2402Name 24__1_Battery_TimeControl_Mo
attr WR_1_API set2402URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2403Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfTue","value":"$val"}]}]
attr WR_1_API set2403FollowGet 24_Battery_TimeControl
attr WR_1_API set2403Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2403Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2403Hint 0,1,2,Battery_TimeControl_2_Di
attr WR_1_API set2403IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2403Method PUT
attr WR_1_API set2403Name 24__2_Battery_TimeControl_Di
attr WR_1_API set2403TextArg 1
attr WR_1_API set2403URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2404Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfWed","value":"$val"}]}]
attr WR_1_API set2404FollowGet 24_Battery_TimeControl
attr WR_1_API set2404Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2404Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2404Hint 0,1,2,Battery_TimeControl_3_Mi
attr WR_1_API set2404IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2404Method PUT
attr WR_1_API set2404Name 24__3_Battery_TimeControl_Mi
attr WR_1_API set2404TextArg 1
attr WR_1_API set2404URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2405Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfThu","value":"$val"}]}]
attr WR_1_API set2405FollowGet 24_Battery_TimeControl
attr WR_1_API set2405Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2405Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2405Hint 0,1,2,Battery_TimeControl_4_Do
attr WR_1_API set2405IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2405Method PUT
attr WR_1_API set2405Name 24__4_Battery_TimeControl_Do
attr WR_1_API set2405URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2406Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfFri","value":"$val"}]}]
attr WR_1_API set2406FollowGet 24_Battery_TimeControl
attr WR_1_API set2406Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2406Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2406Hint 0,1,2,Battery_TimeControl_5_Fr
attr WR_1_API set2406IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2406Method PUT
attr WR_1_API set2406Name 24__5_Battery_TimeControl_Fr
attr WR_1_API set2406URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2407Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfSat","value":"$val"}]}]
attr WR_1_API set2407Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2407Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2407Hint 0,1,2,Battery_TimeControl_6_Sa
attr WR_1_API set2407IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2407Method PUT
attr WR_1_API set2407Name 24__6_Battery_TimeControl_Sa
attr WR_1_API set2407URL http://%IP-WR%/api/v1/settings
VG
Christian