Was bewirkt das Attribut dummy?

Begonnen von oniT, 10 August 2014, 15:50:21

Vorheriges Thema - Nächstes Thema

oniT

Hallo,

mich würde mal interessieren was das Attribut dummy bewirkt? In der commandref steht geschrieben:

dummy
Setzt das Attribut dummy um Devices zu definieren, die keine Funksignale absetzen. Zugehörige notifys werden ausgeführt wenn das Signal empfangen wird. Wird beispielsweise genutzt um auf Code eines Sender zu reagieren, dennoch wird es auch dann kein Signal senden wenn es im Web Frontend getriggert wird.

Ich nutze das Attribut um zu verhindern, dass der Rollo runter fährt wenn die Tür geöffnet ist. Allerdings spielt es dabei kein Rolle ob dummy auf 0 oder 1 gesetzt ist. Ich hätte erwartet, dass bei 0 das Attribut ausser Kraft gesetzt ist. Tut es aber nicht. Es spielt keine Rolle ob 0 oder 1.

Danke

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Hollo

Zitat von: oniT am 10 August 2014, 15:50:21
...Ich nutze das Attribut um zu verhindern, dass der Rollo runter fährt wenn die Tür geöffnet ist. Allerdings spielt es dabei kein Rolle ob dummy auf 0 oder 1 gesetzt ist. Ich hätte erwartet, dass bei 0 das Attribut ausser Kraft gesetzt ist. Tut es aber nicht. Es spielt keine Rolle ob 0 oder 1...

Evtl. habe ich die Frage auch falsch verstanden, aber ich denke, Du hast da einen Gedankenfehler.

Mit dem "dummy" erzeugst Du Dir quasi eine "Device-Variable", die dann in der Oberfläche erscheint und der Du Zustände zuweisen kannst. Diese kannst Du natürlich bei anderen Funktionen oder Anweisungen als Bedingungen mit einbauen.

Hast Du für die Tür einen Dummy definiert oder einen Tür-/Fensterkontakt?

sinngemaess:  if ( Value("Tuerkontakt") ne "open") { fhem "set Rollo runter"}
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

fhainz

Zitat von: Hollo am 11 August 2014, 12:52:45
Evtl. habe ich die Frage auch falsch verstanden, aber ich denke, Du hast da einen Gedankenfehler.

Bei FS20 Devices gibt es ein Attribut dummy. Aber was wirklich genau bewirkt.. keine Ahnung

betateilchen

Achtung! Hier werden zwei komplett unterschiedliche Dinge durcheinandergebracht.

Es gibt ein Device vom Typ dummy - das ist das Ding, das von Hollo beschrieben wird. Darum geht es aber in der Fragestellung hier nicht!

Das Attribut dummy bei FS20 Komponenten bewirkt, dass beim Ansprechen dieses Devices keine tatsächlichen Funktelegramme verschickt werden, das angelegte Device sich aber ansonsten exakt wie ein FS20-Gerät verhält. Man kann damit quasi Statusanzeigen in fhem per FS20-Definitionen erzeugen, die man wie eine echte Signalleuchte ansprechen und "schalten" kann, ohne dass unnötiger (weil sinnloser) Funkballast entsteht. Das ist wichtig um die 1%-Regel einzuhalten, die für die Nutzung des zugehörigen Frequenzbereiches vorgeschrieben ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hollo

Wieder was gelernt...  isch habe gar kein FS20   :P
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LuckyDay

das dummy attr funktioniert auch beim HM-LAN  :-*


oniT

Hallo,

ja absolut richtig. Das Attribut dummy funktioniert auch bei HM. Allerdings macht es, wie ich geschrieben habe, keinen Unterschied ob der Wert 0 oder 1 gesetzt ist. Und das ist schon recht seltsam :-(

In meinem Fall setze oder lösche ich halt das Attribut komplett. Wobei mir das so eben nicht gefällt. Nur den Wert zwischen 0 und 1 änder finde ich halt schon geschickter.

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

betateilchen

So langsam kommen wir dahinter, was eigentlich hinter Deiner Frage steckt...


sub HMLAN_SimpleWrite(@) {#####################################################
  my ($hash, $msg, $nonl) = @_;

  return if(!$hash || AttrVal($hash->{NAME}, "dummy", undef));


Hier wird das Schreiben an das HMLAN Device abgebrochen, wenn das Attribut dummy einen logisch wahren Wert zurückliefert. Das kann im ungünstigsten Fall auch bei einer eingetragenen "0" ein wahrer Wert sein.

Exakter wäre m.E. folgende Abfrage in der 00_HMLAN.pm:

  return if(!$hash || (AttrVal($hash->{NAME}, "dummy", 0) == 1));

Der Thread sollte nach Homematic verschoben werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

oniT

Hallo betateilchen,

yep, genau so ist es. Wer schreitet da jetzt ein? Martin bestimmt oder?  ;)

Danke

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

betateilchen

drum wurde das Thema ja hierher verschubst, martin wird es sicher irgendwann entdecken ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

martinp876

es hat noch etwas mehr gefehlt.... insbesondere beim wiedereinschalten.

Zu dem Details:

Man muss dummy für IOs (z.B. HMLAN) HM unterscheiden.
Bei HMLAN wird das IO stillgelegt. Somit wird auch das TCP interface heruntergefahren. Senden und Empfangen ist "aus". Gesendete Messages werden verworfen.

Für HM devices wird das Senden unterdrückt, nicht aber das Empfangen.

Hier - wie auch bei IOs - stellt sich das Problem der Kernal - der ausschliesslich auf das vorhanden sein des Attributs abgefragt
sub
IsDummy($)
{
  my $devname = shift;

  return 1 if(defined($attr{$devname}) && defined($attr{$devname}{dummy}));
  return 0;
}

sub
IsIgnored($)
{
  my $devname = shift;
  if($devname &&
     defined($attr{$devname}) && $attr{$devname}{ignore}) {
    Log 4, "Ignoring $devname";
    return 1;
  }
  return 0;
}


und verhindert auch beim setzen auf "0" das senden. Ist ggf ein Fall für Rudi - ich dachte, das hatten wir schon...  vielleicht will er es nicht?