FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Maxl am 14 Januar 2015, 21:41:15

Titel: Funktion in 99_myUtils blinkt nicht so wie ich es gerne hätte
Beitrag von: Maxl am 14 Januar 2015, 21:41:15
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" );
    }
}


Titel: Antw:Aufruf Funktion in 99_myUtils geht nicht
Beitrag von: TomWest am 15 Januar 2015, 10:24:04
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.
Titel: Antw:Aufruf Funktion in 99_myUtils geht nicht
Beitrag von: Maxl am 15 Januar 2015, 12:19:31
Hallo,

macht irgendwie keinen Unterschied ob ich set oder setstate schreibe, normlerweise müßte doch ein Event im Monitor erscheinen, oder?
Titel: Antw:Aufruf Funktion in 99_myUtils geht nicht
Beitrag von: franky08 am 15 Januar 2015, 12:30:30
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
Titel: Antw:Aufruf Funktion in 99_myUtils geht nicht
Beitrag von: Maxl am 15 Januar 2015, 14:12:31
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ß