Überschussenergie WLAN Steckdose einschalten

Begonnen von ronilee, 14 Januar 2022, 19:45:57

Vorheriges Thema - Nächstes Thema

ronilee

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

xerion

Ich würde es mit einem DOIF und on-for-timer lösen. Das wäre meines Erachtens die einfachste Lösung.
Ich würde mich  freuen, wenn du meinen Einladungscode für Tibber, der Stromanbieter, der dir hilft, deinen Stromverbrauch zu verstehen und zu reduzieren, nutzt: https://invite.tibber.com/5fc08jbs. So bekommen wir beide 50 Euro und 100 % Ökostrom / https://geld-fuer-eauto.de/ref/334561880

ronilee

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

ronilee

#3
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')
}

rabehd

Ich nutze DOIF nicht im perl-Modus, aber ein "and" in Ausführungsteil überrascht mich.
Auch funktionierende Lösungen kann man hinterfragen.

Stelaku



{
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

rabehd

@Stelaku
Da fehlt doch einmal }.
Zweimal {, erfordert auch zweimal }.
Auch funktionierende Lösungen kann man hinterfragen.

ronilee

#7
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'")
}
}

rabehd

#8
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.
Auch funktionierende Lösungen kann man hinterfragen.

ronilee

#9
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'");
}}

ronilee

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");;
}}

ch.eick

Zitat von: ronilee am 27 Februar 2022, 11:59:41
Habe das ganze jetzt verfeinert  :) jetzt bin ich zufrieden
Hier wäre meine Implementierung 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
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