Funktion in 99_myUtils blinkt nicht so wie ich es gerne hätte

Begonnen von Maxl, 14 Januar 2015, 21:41:15

Vorheriges Thema - Nächstes Thema

Maxl

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


FHEM auf Raspberry mit HM, HMC und AVR Netios.

TomWest

#1
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.
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Maxl

Hallo,

macht irgendwie keinen Unterschied ob ich set oder setstate schreibe, normlerweise müßte doch ein Event im Monitor erscheinen, oder?
FHEM auf Raspberry mit HM, HMC und AVR Netios.

franky08

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Maxl

#4
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ß
FHEM auf Raspberry mit HM, HMC und AVR Netios.