Hallo,
ich habe versucht ein Relais auf dem NETIO zu toggeln und folgenden Code verwendet.
Leider rührt sich nichts, eine Fehlermeldung bekomme ich aber auch nicht.
fhem.cfg
define lampe_untoggle at +*00:00:10 { Untoggle( "Relais3" ) }
99_myUtils
sub Untoggle($) {
my ($obj) = @_;
if( $obj eq "off" ){
fhem( "setstate $obj on" );
}
else {
fhem( "setstate $obj off" );
}
}
Hi,
Wenn Du das so aufruft, ist ja $obj immer "Relais3", damit wird $obj eq "off" selten zum Ziel führen.
Bei setstate steht in der Commandref:
Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist maßgebend für die Status-Anzeige in diversen Frontends. Dieser Befehl wird auch im statefile benutzt.
Probier mal "set". Manchmal heißt es übrigens auch "On" bzw. "Off". Ich würde das in der Befehlszeile ausprobieren, bis es funktioniert und den Befehl dann einfach ins Programm packen.
Hallo,
macht irgendwie keinen Unterschied ob ich set oder setstate schreibe, normlerweise müßte doch ein Event im Monitor erscheinen, oder?
Und wo stellst du die Daten für das Array bereit?? Da sehe ich nichts! my ($obj) = @_;
So wie du das angelegt hast, wird es nichts.
Der Aufruf der sub muss auch über den Namen der sub erfolgen also über {Untoggle} obwohl der Name unglücklich gewählt ist, da untoggle in fhem schon verwendet wird.
VG
Frank
Hallo,
habe es nun so abgeändert
sub Untoggle($) {
my ($obj) = @_;
if( Value($obj) eq "on" ){
fhem( "set $obj off" );
} else {
fhem( "set $obj on" );
}
}
wenn ich es richtig verstehe sollte nun die Lampe alle 10s blinken, wenn ich die Funktion so aufrufe
#define lampe_untoggle at +*00:00:10 { Untoggle( "Relais9") ) }
Die Lampe bleibt aber nach einen Aus immer An und geht nie wieder aus. Was verstehe ich da nicht, ich dachte der Value ändert nach einem "Ein" oder "Aus" den Zustand nach "on" oder "off". Bei mir bleibt es immer "on" obwohl das IF die Lampe wieder AUS machen sollte. Wer kann mir weiterhelfen.
Gruß