Hallo!
Ich habe erfolgreich meinen Fronius GEN24 im FHEM eingebunden.
Und meine Shelly Plug S WLAN Steckdose.
Jetzt möchte ich wenn ich zB.: 1000W ins Netz Einspeise das mir die WLAN Steckdose einschaltet und dann zB.: 60 Minuten haltet.
Wie kann ich so Szenarien einbinden in FHEM?
Herzlichen Dank
Ich würde es mit einem DOIF und on-for-timer lösen. Das wäre meines Erachtens die einfachste Lösung.
Danke für deine Antwort :)
Genau diesen Anstoß habe ich benötigt.
Danke :)
Habe bereits meine ersten Entwurf, werde ich aber sicher immer wieder verbessern erweitern.
([SymoGEN24:power:avg5] > 2000 && [KinderzimmerKlima:Temperatur:avg5] < 20) (set Shelly Steckdose on)
attr ifrarotHeizung repeatsame 5
attr ifrarotHeizung cmdpause 900
Ich wollte das ganze auf Perl ändern, bekomme das aber nicht hin habe immer einen Syntax Fehler.
Wo liegt hier der Fehler?
if([SymoGEN24:power:avg2] > 2000 and [ESPEasy_Blumen_2_SHT31:Temperatur:avg2] < 23){
(set Shelly on) and (set pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde eingeschaltet')
}
Ich nutze DOIF nicht im perl-Modus, aber ein "and" in Ausführungsteil überrascht mich.
{
if([SymoGEN24:power:avg2] > 2000 and [ESPEasy_Blumen_2_SHT31:Temperatur:avg2] < 23){
fhem_set ("Shelly on");
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde eingeschaltet')
}
sollte das nicht ungefähr so im perl mode aussehen
@Stelaku
Da fehlt doch einmal }.
Zweimal {, erfordert auch zweimal }.
Danke für eure Antworten,
jetzt habe ich es aber :) das "fhem_set" hatte ich bereits schon mal probiert, ich glaube ich habe hier den Unterstrich vergessen und
ja das "and" funktioniert auch nicht habe aber eine Lösung gefunden 8)
So funktioniert es jetzt, muss mir nur noch überlegen wie ich das mit der Zeitsteuerung mache,
nicht das es ständig aus und einschaltet, das attr ifrarotHeizung cmdpause 900 funktioniert nicht bei Perl.
{
if([SymoGEN24:power:avg2] > 2000)
{if ([ESPEasy_Blumen_2_SHT31:Temperatur:avg2] < 23){
fhem_set ("Kinderzimmer on");
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde eingeschaltet'")}
}
else
{
fhem_set ("Kinderzimmer off");
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde ausgeschaltet'")
}
}
Hier noch ein anderes Beispiel von mir, funktioniert :):
{
if([ESPEasy_Blumen_1_BH1750:Lux:avg2] > 10000){
fhem_set("Blumenzimmer off");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer über 10000Lux Shelly schaltet das Pflanzenlicht aus'")
}
else
{
fhem_set("Blumenzimmer on");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer unter 10000Lux Shelly schaltet das Pflanzenlicht an'")
}
}
Das Thema gehört eigentlich nicht unter Solaranlagen, wohl eher Anfängerfragen oder DOIF. Du kannst es als Ersteller auch verschieben.
Das Andere ihren Code anders darstellen, ist Dir aufgefallen?
Die Form wird hier lieber gesehen. Die Buttons über dem Bearbeitungsfenster sind Dir aufgefallen? Hier wäre der mit # eine Empfehlung.
Ich bekomme sehr viele Push Nachrichten, aber das unterbinden habe ich noch nicht geschafft.
Möchte nur bei einer Zustandsänderung benachrichtigt werden.
Mein Lösungsansatz: ({if(Value("Blumenzimmer") ne "off"){) das bringt aber leider nichts.
Wie könnte ich das Problem Lösen?
{
if([ESPEasy_Blumen_1_BH1750:Lux:avg2] > 10000){{if(Value("Blumenzimmer") ne "off"){
fhem_set("Blumenzimmer off");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer über 10000Lux Shelly schaltet das Pflanzenlicht aus'")
}
else
{
fhem_set("Blumenzimmer on");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer unter 10000Lux Shelly schaltet das Pflanzenlicht an'")
}
}
Ich habe jetzt eine Lösung gefunden!
Mit DOIF_Readings
powerSymoON:([SymoGEN24:power]>2000), powerSymoOFF:([SymoGEN24:power]<2000)
{if ([07:00-18:00|7]){
if ([$SELF:powerSymoON]){
fhem_set ("Kinderzimmer on");
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde eingeschaltet'")
}}}
{if ([07:00-18:00|7]){
if ([$SELF:powerSymoOFF]){
fhem_set ("Kinderzimmer off");
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde ausgeschaltet'")
}}}
Beispiel 2:
LuxUnter10000: ([ESPEasy_Blumen_1_BH1750:Lux] < 10000), LuxUeber10000: ([ESPEasy_Blumen_1_BH1750:Lux] > 10000)
{if([$SELF:LuxUnter10000]){
fhem_set("Blumenzimmer on");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer unter 10000Lux Shelly schaltet das Pflanzenlicht an'");
}}
{if([$SELF:LuxUeber10000]){
fhem_set("Blumenzimmer off");
fhem_set("pushmsg msg title='Frühbeet' message='Es hat im Blumenzimmer über 10000Lux Shelly schaltet das Pflanzenlicht aus'");
}}
Habe das ganze jetzt verfeinert :) jetzt bin ich zufrieden
LuxOn{if ([06:00-18:00,+:15] and ([?ESPEasy_Blumen_1_BH1750:Lux] < 3000)){
fhem_set("Blumenzimmer on") if ([?Blumenzimmer] ne "on");;
fhem_set("pushmsg msg title='Frühbeet' message='Shelly Lux an'") if ([?Blumenzimmer] ne "on");;
}}
LuxOff{if ([06:00-18:00,+:05] and ([?ESPEasy_Blumen_1_BH1750:Lux] > 10000)){
fhem_set("Blumenzimmer off") if ([?Blumenzimmer] ne "off");;
fhem_set("pushmsg msg title='Frühbeet' message='Shelly Lux off'") if ([?Blumenzimmer] ne "off");;
}}
KinderzimmerOnOff{if ([06:00-18:00,+:10] and ([?SymoGEN24:Bezug] < 100)){
fhem_set ("Kinderzimmer on") if ([?Kinderzimmer] ne "on");;
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung bleibt eingeschaltet Bezug < 100W'") if ([?Kinderzimmer] ne "on");;
}
else{
fhem_set ("Kinderzimmer off") if ([?Kinderzimmer] ne "off");;
fhem_set ("pushmsg msg 'Kinderzimmer' 'Infrarotheizung wurde ausgeschaltet keine Überschussenergie'") if ([?Kinderzimmer] ne "off");;
}}
Zitat von: ronilee am 27 Februar 2022, 11:59:41
Habe das ganze jetzt verfeinert :) jetzt bin ich zufrieden
Hier wäre meine Implementierung (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus#PV_Eigenverbrauch-Steuerung) für verschiedene Geräte Typen.
Das start/stop Kommando wäre in einer Konfiguration gespeichert und ist somit unabhängig von der Steuerung.
VG Christian