Autor Thema: Steckdose automatisch abschalten  (Gelesen 1325 mal)

Offline chriz77

  • New Member
  • *
  • Beiträge: 21
Steckdose automatisch abschalten
« am: 08 Oktober 2017, 13:09:06 »
Hallo FHEMler,

ich möchte meinen Trockner nach dem Trocknungsvorgang ausschalten. Dafür habe ich folgendes Notify geschrieben:

Plug1:power_now:.* {
     if (ReadingsNum("Plug1", "power_now", 0) > 10 && ReadingsVal("Plug1", "running", "off") eq "off") {
          fhem("setreading Plug1 running on");
          fhem(Log 1, "Ein");
     }

     if (ReadingsNum("Plug1", "power_now", 0) < 1 && ReadingsVal("Plug1", "running", "off") eq "on") {
          fhem("setreading Plug1 running off");
  fhem(Log 1, "Aus");
          fhem("set Plug1 off");
     }
}

Plug1 ist ein Ediplug SP2101W

Das Notify läuft bis auf den Ausschaltbefehl ohne Probleme. Über die Comandozeile läuft der off-Befehl.

Hat jemand eine Idee an was es liegen könnte?

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20980
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Steckdose automatisch abschalten
« Antwort #1 am: 08 Oktober 2017, 13:27:06 »
Hi,

Das zweite if wird nicht ausgeführt.
https://perldoc.perl.org/perlsyn.html#Compound-Statements

Tipp: Wenn Du die Zeile mit dem Log nicht mehr brauchst ist das FHEM IF deutlich kürzer und spart Dir den Wechsel nach Perl.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline chriz77

  • New Member
  • *
  • Beiträge: 21
Antw:Steckdose automatisch abschalten
« Antwort #2 am: 08 Oktober 2017, 20:01:34 »
Meinst Du so:

Plug1:power_now:.*
DOIF(ReadingsNum("Plug1", "power_now", 0) > 10 && ReadingsVal("Plug1", "running", "off") eq "off")
(setreading Plug1 running on)
DOELSEIF(ReadingsNum("Plug1", "power_now", 0) < 1 && ReadingsVal("Plug1", "running", "off") eq "on")
(setreading Plug1 running off, set Plug1 off)

Damit gehts auf jeden Fall gar nicht. Was stimmt nicht?

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20980
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Steckdose automatisch abschalten
« Antwort #3 am: 08 Oktober 2017, 20:07:18 »
Jetzt wirfst Du alles durcheinander.  :'(

würde ich den Perl Ausdruck so versuchen (nicht getestet):
{
     if (ReadingsNum("Plug1", "power_now", 0) > 10 && ReadingsVal("Plug1", "running", "off") eq "off") {
          fhem("setreading Plug1 running on");
          fhem(Log 1, "Ein");
     }
elsif (ReadingsNum("Plug1", "power_now", 0) < 1 && ReadingsVal("Plug1", "running", "off") eq "on") {
fhem("setreading Plug1 running off");
fhem(Log 1, "Aus");
fhem("set Plug1 off");
     }
}

Eventuell geht Dein Ausdruck auch wenn Du beide Perl Befehle (if und if) mit Semikolon trennst.

DOIF ist etwas völlig anderes. Ich  meinte als zweite Option IF -> https://fhem.de/commandref_DE.html#IF
auch wieder ungetestet etwa so IF([Plug1:power_now] > 10 && [Plug1:running] eq "off")(setreading Plug1 running on)
ELSE (IF([Plug1:power_now] < 1 && [Plug1:running] eq "on") (setreading Plug1 running off;set Plug1 off))

Gruß Otto
« Letzte Änderung: 08 Oktober 2017, 21:01:16 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline chriz77

  • New Member
  • *
  • Beiträge: 21
Antw:Steckdose automatisch abschalten
« Antwort #4 am: 08 Oktober 2017, 20:57:37 »
Hallo Otto,

vielen Dank für Deine Hilfe! Beim Perl Ausdruck meinst Du "elsif" oder? elseif nimmt der Editor gar nicht an.
Damit erhalte ich genau das gleiche Ergebnis wie in meinem ersten Versuch mit 2x IF. Das Log wir in beiden Fällen geschrieben. Das Off geht nicht.

Zitat
IF([Plug1:power_now] > 10 && [Plug1:running] eq "off")(setreading Plug1 running on)
ELSE (IF([Plug1:power_now] < 1 && [Plug1:running] eq "on") (setreading Plug1 running off;set Plug1 off))

Das führt zum sofortigen Absturz meiner Fhem Installation. Muss ich erst in der fhem.cfg löschen sonst fährt Fhem nicht mehr hoch.

Offline chriz77

  • New Member
  • *
  • Beiträge: 21
Antw:Steckdose automatisch abschalten
« Antwort #5 am: 08 Oktober 2017, 21:01:55 »
Es muss an der Steckdose liegen, wenn ich statt dem OFF Befehlt einen IT-Aktor schalte geht es. Also kanns eigentlich nicht am Script liegen, oder?

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20980
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Steckdose automatisch abschalten
« Antwort #6 am: 08 Oktober 2017, 21:04:35 »
Ja sorry, habe es geändert.
Du meinst der Logeintrag fhem(Log 1, "Aus"); wird auch geschrieben?

Absturz?
Wie gibst Du den Code ein? Über den DEF Editor oder die fhem.cfg direkt?

Edit: Ok wenn es so ist dann liegt es offenbar nur an Deinem Plug1?

Gruß Otto
« Letzte Änderung: 08 Oktober 2017, 21:06:07 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline chriz77

  • New Member
  • *
  • Beiträge: 21
Antw:Steckdose automatisch abschalten
« Antwort #7 am: 08 Oktober 2017, 21:15:08 »
Zitat
Du meinst der Logeintrag fhem(Log 1, "Aus"); wird auch geschrieben?
Genau.

Zitat
Wie gibst Du den Code ein? Über den DEF Editor oder die fhem.cfg direkt?
Über DEF

Zitat
Ok wenn es so ist dann liegt es offenbar nur an Deinem Plug1?
Aber "set Plug1 off" geht über die Eingabezeile einwandfrei. Wo liegt dann da der Unterschied? Checks nicht...  :(

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20980
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Steckdose automatisch abschalten
« Antwort #8 am: 08 Oktober 2017, 21:18:47 »
Sorry sehe es erst jetz -> fhem(Log 1, "Aus"); ist doch falsch?
{Log 1, "Aus"}

Also wird der set Befehl durch den falschen Eintrag eventuell nicht ausgeführt. Aber Da muss es doch einen Fehler im Log geben?

Gruß Otto
« Letzte Änderung: 08 Oktober 2017, 21:20:44 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20980
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Steckdose automatisch abschalten
« Antwort #9 am: 08 Oktober 2017, 21:39:29 »
Habe gerade probiert: das mit dem Log geht so und so.
Egal, aber bei mir geht der Code aus Antwort #3 einwandfrei.
Gib mal bitte ein list Deiner aktuellen version.

Ich vermute Du hast eine Leerzeile im Code. Die darf nicht sein. Aber dann funktioniert das notify eigentlich gar nicht.
« Letzte Änderung: 08 Oktober 2017, 21:52:40 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

 

decade-submarginal