Diskussion:SunnyHomeManager: Unterschied zwischen den Versionen
(Neuer Abschnitt →Steuerung der Spülmaschine) |
K (Pushover ergänzt →Steuerung der Spülmaschine) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
* Spülmaschine einschalten/starten | * Spülmaschine einschalten/starten | ||
* Den Dummy z. B. auf "NaechsteGelegenheit" setzen und die Stromzufuhr unterbrechen | * Den Dummy z. B. auf "NaechsteGelegenheit" setzen und die Stromzufuhr unterbrechen | ||
* Die Stromzufuhr wird dann über das DOIF wieder hergestellt, sobald die Bedingungen erfüllt sind und das | * Die Stromzufuhr wird dann über das DOIF wieder hergestellt, sobald die Bedingungen erfüllt sind und der Geschirrspüler setzt das Programm fort | ||
Das alles ist noch recht neu, deshalb habe ich es erstmal nur hier auf die Diskussionsseite gesetzt. Dieser Beitrag bezieht sich auf die Diskussion im Forum (siehe {{Link2Forum|Topic= 27667 |Message=427122}}). Dort ist auch das benötigte Modul 98_SHMForecastRelative. | Das alles ist noch recht neu, deshalb habe ich es erstmal nur hier auf die Diskussionsseite gesetzt. Dieser Beitrag bezieht sich auf die Diskussion im Forum (siehe {{Link2Forum|Topic= 27667|Message=427122}}). Dort ist auch das benötigte Modul 98_SHMForecastRelative. | ||
Ich habe es erst seit ein paar Tagen im Einsatz. Es hat erste Tests bestanden. Als perfekt würde ich es aber noch nicht bezeichnen :-) | Ich habe es erst seit ein paar Tagen im Einsatz. Es hat erste Tests bestanden. Als perfekt würde ich es aber noch nicht bezeichnen :-) | ||
Das DOIF kann man beliebig anpassen und mehrere Bedingungen miteinander koppeln. Ich habe z. B. eingestellt, dass die Spülmaschine nur zwischen 10:00 Uhr und 15:00 Uhr eingeschaltet werden soll (Modus NaechsteGelegenheit). Im Modus Pflicht soll er frühestens um 11:00 Uhr laufen. | Das DOIF kann man beliebig anpassen und mehrere Bedingungen miteinander koppeln. Ich habe z. B. eingestellt, dass die Spülmaschine nur zwischen 10:00 Uhr und 15:00 Uhr eingeschaltet werden soll (Modus NaechsteGelegenheit). Im Modus Pflicht soll er frühestens um 11:00 Uhr laufen. <br /> | ||
Beim automatischen Wiedereinschalten wird eine Nachricht auf das Smartphone per [[Pushover]] verschickt. | |||
Das Abschalten muss übrigens manuell gemacht werden (entweder über den Funkschalter oder direkt an der Funksteckdose wenn man ausräumt). | Das Abschalten muss übrigens manuell gemacht werden (entweder über den Funkschalter oder direkt an der Funksteckdose wenn man ausräumt). | ||
Der Kanal zum Schalten der HM-Funksteckdose heißt bei mir ''HM_Sw1_Spuelmaschine_Sw''. Auf die Wiedergabe der Definition habe ich hier verzichtet. | |||
''Hinweis'': alle Code-Zeilen habe ich aus der fhem.cfg-Datei kopiert. Sie sind also nicht dazu geeignet, sie in das [[Konfiguration|Befehl-Eingabefeld]] einzutragen und dort auszuführen. | ''Hinweis'': alle Code-Zeilen habe ich aus der fhem.cfg-Datei kopiert. Sie sind also nicht dazu geeignet, sie in das [[Konfiguration|Befehl-Eingabefeld]] einzutragen und dort auszuführen. | ||
Hier ist zunächst der [[Dummy]], mit dem den gewünschten Modus einstellt. Die Beschreibung habe ich in das comment-Attribut gepackt. | |||
<nowiki>define SpuelmaschinenAutomatik dummy | <nowiki>define SpuelmaschinenAutomatik dummy | ||
Zeile 31: | Zeile 34: | ||
attr SpuelmaschinenAutomatik room EG_Kueche | attr SpuelmaschinenAutomatik room EG_Kueche | ||
attr SpuelmaschinenAutomatik setList Aus NaechsteGelegenheit Pflicht Sofort | attr SpuelmaschinenAutomatik setList Aus NaechsteGelegenheit Pflicht Sofort</nowiki> | ||
</nowiki> | |||
Voraussetzung 1: Das SHM-Modul von Brun (98_SHM.pm aus {{Link2Forum|Topic= 27667|Message=205871}}). Siehe dazu auch die Hinweise auf [[SunnyHomeManager]]. | |||
<nowiki>define MySHM SHM benutzername@example.com kennwort intervall</nowiki> | |||
Voraussetzung 2: Das SHMForecastRelative-Modul (98_SHMForecastRelative.pm aus {{Link2Forum|Topic= 27667|Message=427154}}). | |||
<nowiki>define MySHMForecastRelative SHMForecastRelative intervall</nowiki> | |||
Und hier ist nun das Haupt-DOIF: | Und hier ist nun das Haupt-DOIF: | ||
Zeile 48: | Zeile 58: | ||
attr SpuelmaschineEinschalten.Pruefung group Photovoltaik | attr SpuelmaschineEinschalten.Pruefung group Photovoltaik | ||
attr SpuelmaschineEinschalten.Pruefung room EG_Kueche | attr SpuelmaschineEinschalten.Pruefung room EG_Kueche | ||
attr SpuelmaschineEinschalten.Pruefung wait 0:10:60:60:30 | attr SpuelmaschineEinschalten.Pruefung wait 0:10:60:60:30</nowiki> | ||
</nowiki> | |||
Hier ist das zweite DOIF, welches den Dummy steuert. Den Dummy innerhalb des oberen DOIFs zu setzen würde zwar funktionieren, aber dann bekommt es das obere DOIF nicht mit, dass sich der Status geändert hat (das soll Loops verhindern und ist innerhalb Fhem so gewollt). | Hier ist das zweite DOIF, welches den Dummy steuert. Den Dummy innerhalb des oberen DOIFs zu setzen würde zwar funktionieren, aber dann bekommt es das obere DOIF nicht mit, dass sich der Status geändert hat (das soll Loops verhindern und ist innerhalb Fhem so gewollt). | ||
Zeile 58: | Zeile 67: | ||
\ | \ | ||
) DOELSE () | ) DOELSE () | ||
attr SpuelmaschineEingeschaltet.Pruefung room EG_Kueche | attr SpuelmaschineEingeschaltet.Pruefung room EG_Kueche</nowiki> | ||
</nowiki> | |||
Ich hatte noch einen FS20-Schalter ([[FS20 S4A Aufputz Sender|S4A]]) übrig. Mit diesem steuere ich den Dummy. Das ist nicht zwingend notwendig, erhöht aber bestimmt den WAF :-) | Ich hatte noch einen FS20-Schalter ([[FS20 S4A Aufputz Sender|S4A]]) übrig. Mit diesem steuere ich den Dummy. Das ist nicht zwingend notwendig, erhöht aber bestimmt den WAF :-) | ||
Zeile 80: | Zeile 88: | ||
}\ | }\ | ||
} | } | ||
attr Spuelmaschine.TasterWahl room EG_Kueche | attr Spuelmaschine.TasterWahl room EG_Kueche</nowiki> | ||
</nowiki> | |||
Der Nachteil bei diesem [[Notify]] ist, dass das Taster-Objekt nicht unter "Probably associated with..." angelistet wird. Wenn man das möchte, muss man vier einzelne Notifiy-Definitionen erstellen anstelle dem einen hier. | Der Nachteil bei diesem [[Notify]] ist, dass das Taster-Objekt nicht unter "Probably associated with..." angelistet wird. Wenn man das möchte, muss man vier einzelne Notifiy-Definitionen erstellen anstelle dem einen hier. | ||
--[[Benutzer:BerndArnold|BerndArnold]] ([[Benutzer Diskussion:BerndArnold|Diskussion]]) 01:00, 20. Mär. 2016 (CET) | --[[Benutzer:BerndArnold|BerndArnold]] ([[Benutzer Diskussion:BerndArnold|Diskussion]]) 01:00, 20. Mär. 2016 (CET) |
Aktuelle Version vom 20. März 2016, 16:04 Uhr
Steuerung der Spülmaschine
Das Forecast-Modul (98_SHMForecast) von Brun habe ich so angepasst, dass es die relativen Zeitwerte und deren Daten (Consumption, IsConsumptionRecommended, PvMeanPower) abbildet. Abhängig davon steuere ich über ein DOIF die Spülmaschine (oder Waschmaschine). Das Gerät muss nur eine Eigenschaft aufweisen: nach einem Stromausfall muss das Gerät an der Stelle weitermachen, wo es war, als der Strom "ausfiel".
Wie läuft das ganze ab?
- Spülmaschine füllen
- Strom einschalten (direkt an der Funksteckdose - ich habe den HM-ES-PMSw1 von Homematic -, per Funkschalter oder über Fhem)
- Spülmaschine einschalten/starten
- Den Dummy z. B. auf "NaechsteGelegenheit" setzen und die Stromzufuhr unterbrechen
- Die Stromzufuhr wird dann über das DOIF wieder hergestellt, sobald die Bedingungen erfüllt sind und der Geschirrspüler setzt das Programm fort
Das alles ist noch recht neu, deshalb habe ich es erstmal nur hier auf die Diskussionsseite gesetzt. Dieser Beitrag bezieht sich auf die Diskussion im Forum (siehe Beitrag). Dort ist auch das benötigte Modul 98_SHMForecastRelative. Ich habe es erst seit ein paar Tagen im Einsatz. Es hat erste Tests bestanden. Als perfekt würde ich es aber noch nicht bezeichnen :-)
Das DOIF kann man beliebig anpassen und mehrere Bedingungen miteinander koppeln. Ich habe z. B. eingestellt, dass die Spülmaschine nur zwischen 10:00 Uhr und 15:00 Uhr eingeschaltet werden soll (Modus NaechsteGelegenheit). Im Modus Pflicht soll er frühestens um 11:00 Uhr laufen.
Beim automatischen Wiedereinschalten wird eine Nachricht auf das Smartphone per Pushover verschickt.
Das Abschalten muss übrigens manuell gemacht werden (entweder über den Funkschalter oder direkt an der Funksteckdose wenn man ausräumt).
Der Kanal zum Schalten der HM-Funksteckdose heißt bei mir HM_Sw1_Spuelmaschine_Sw. Auf die Wiedergabe der Definition habe ich hier verzichtet.
Hinweis: alle Code-Zeilen habe ich aus der fhem.cfg-Datei kopiert. Sie sind also nicht dazu geeignet, sie in das Befehl-Eingabefeld einzutragen und dort auszuführen.
Hier ist zunächst der Dummy, mit dem den gewünschten Modus einstellt. Die Beschreibung habe ich in das comment-Attribut gepackt.
define SpuelmaschinenAutomatik dummy attr SpuelmaschinenAutomatik comment Aus: Geschirrspüler soll nicht laufen\ NaechsteGelegenheit: Geschirrspüler wird laufen, wenn PV-Überschuss vorherrscht\ Pflicht: Geschirrspüler wird laufen, unabhängig vom PV-Überschuss (weil er halt übervoll ist und es Zeit wird)\ Aktiv: Geschirrspüler wurde eingeschaltet vom DOIF.\ Sofort: Geschirrspüler soll jetzt eingeschaltet werden.\ \ In Verbindung mit einem DOIF.\ attr SpuelmaschinenAutomatik room EG_Kueche attr SpuelmaschinenAutomatik setList Aus NaechsteGelegenheit Pflicht Sofort
Voraussetzung 1: Das SHM-Modul von Brun (98_SHM.pm aus Beitrag). Siehe dazu auch die Hinweise auf SunnyHomeManager.
define MySHM SHM benutzername@example.com kennwort intervall
Voraussetzung 2: Das SHMForecastRelative-Modul (98_SHMForecastRelative.pm aus Beitrag).
define MySHMForecastRelative SHMForecastRelative intervall
Und hier ist nun das Haupt-DOIF:
define SpuelmaschineEinschalten.Pruefung DOIF ( [SpuelmaschinenAutomatik] eq "Aus" ) (\ ) DOELSEIF ( [SpuelmaschinenAutomatik] eq "Sofort" ) (\ (set HM_Sw1_Spuelmaschine_Sw on)\ ) DOELSEIF ( [SpuelmaschinenAutomatik] eq "NaechsteGelegenheit" and [MySHMForecastRelative:Next04Hours-Total] > 1000 and [MySHMForecastRelative:Next04Hours-IsConsumptionRecommended] >= 2 and [MySHMForecastRelative:ThisHour_IsConsumptionRecommended] eq "yes" and [10:00-15:00] ) (\ (set Pushover msg 'Sauber' 'Jetzt wird mal die Spuelmaschine eingeschalten.' 'MeinHandy' 0 '')\ (set HM_Sw1_Spuelmaschine_Sw on)\ ) DOELSEIF ( [SpuelmaschinenAutomatik] eq "Pflicht" and [11:00-13:00] ) (\ (set Pushover msg 'Sauber' 'Jetzt wird mal die Spuelmaschine eingeschalten.' 'MeinHandy' 0 '')\ (set HM_Sw1_Spuelmaschine_Sw on)\ ) DOELSE () attr SpuelmaschineEinschalten.Pruefung group Photovoltaik attr SpuelmaschineEinschalten.Pruefung room EG_Kueche attr SpuelmaschineEinschalten.Pruefung wait 0:10:60:60:30
Hier ist das zweite DOIF, welches den Dummy steuert. Den Dummy innerhalb des oberen DOIFs zu setzen würde zwar funktionieren, aber dann bekommt es das obere DOIF nicht mit, dass sich der Status geändert hat (das soll Loops verhindern und ist innerhalb Fhem so gewollt).
define SpuelmaschineEingeschaltet.Pruefung DOIF ( [HM_Sw1_Spuelmaschine_Sw] eq "on" ) (\ (set SpuelmaschinenAutomatik Aktiv)\ ) DOELSEIF ( [HM_Sw1_Spuelmaschine_Sw] eq "off" ) (\ \ ) DOELSE () attr SpuelmaschineEingeschaltet.Pruefung room EG_Kueche
Ich hatte noch einen FS20-Schalter (S4A) übrig. Mit diesem steuere ich den Dummy. Das ist nicht zwingend notwendig, erhöht aber bestimmt den WAF :-)
define Spuelmaschine.TasterWahl notify FS20S4_Kueche_Btn.:toggle { \ Log 1, "Button $NAME: $EVENT";;\ if ( $NAME =~ /Btn1/ ) {\ fhem( "set SpuelmaschinenAutomatik Aus" );;\ fhem( "set HM_Sw1_Spuelmaschine_Sw off" );;\ } elsif ( $NAME =~ /Btn2/ ) {\ fhem( "set HM_Sw1_Spuelmaschine_Sw on" );;\ } elsif ( $NAME =~ /Btn3/ ) {\ fhem( "set SpuelmaschinenAutomatik NaechsteGelegenheit" );;\ fhem( "set HM_Sw1_Spuelmaschine_Sw off" );;\ } elsif ( $NAME =~ /Btn4/ ) {\ fhem( "set SpuelmaschinenAutomatik Pflicht" );;\ fhem( "set HM_Sw1_Spuelmaschine_Sw off" );;\ } else {\ Log 1, "Unbekannter Fall: $NAME / $EVENT";;\ }\ } attr Spuelmaschine.TasterWahl room EG_Kueche
Der Nachteil bei diesem Notify ist, dass das Taster-Objekt nicht unter "Probably associated with..." angelistet wird. Wenn man das möchte, muss man vier einzelne Notifiy-Definitionen erstellen anstelle dem einen hier.
--BerndArnold (Diskussion) 01:00, 20. Mär. 2016 (CET)