Was ist der Unterschied dieser Befehle?

Hallo,

gesteuert wird ein Homematic wired Schalter.

47123 ist das STATE dieses Schalters
Befehl - SetValueBoolean(47123, true); funktioniert (z.B. beim Test)

Gleicher Befehl in in einem Ereignis, wechselt zwar den Zustand auf AN, aber der Schaltbefehl wird nicht ausgeführt.

44532 ist der Schalter
HM_WriteValueBoolean(44532, „STATE“, true); hiermit wird auch der Schaltbefehl ausgeführt.

Warum?

Gruss
MHE

Mein Kollege erklärt immer, dass man das Gaspedal (=Aktionsfunktion) betätigen muss, und nicht am Tacho drehen darf (=Statusvariable), um das Auto zum Fahren zu bringen. :smiley:

Aber Danke fürs finden eines Fehlers. In der 3.4 gab es eine Fehlermeldung, wenn du den ersten Befehl ausführst. Das muss wieder rein :slight_smile:

paresy

PS: Verschiebe in Test-Bereich. Hat weniger mit SymBox als IP-Symcon 4.0 zu tun.

Moin MHE!

Den Unterschied hast du grad selbst erklärt :smiley: :wink:

Befehle zum Schalten oder was auch immer müssen bei HomeMatic/Z-Wave/… IMMER an die Instanz geschickt werden! Die Variablen sind nur ZUM ANZEIGEN der Werte/Status/… gedacht. Deshalb sind sie auch als „Nur Lesen“ markiert!

Siehe auch hier:
HomeMatic — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

Das mit dem Gaspedal und dem Tacho leuchtet mir ein :).

Wie ist das bei den neuen PHP Modulen aus der Community? Wie sollte ich denn dann am besten dort eine Boolean Variable von extern ändern wenn ich logischerweise hier dann auch nicht SetValue verwenden soll bzw. darf?

Es liegt nicht an der Funktion sondern an der Variable die du anfasst. Es gibt eben Welche die nur dafür gedacht sind dich zu informieren.

Gruß,

Toni

Da die PHP Module ihre Variable zur Zeit nicht ReadOnly markieren können, ist es kein Problem. Da sie es in Zukunft aber mal können sollten, wird das Problem bereits hier diskutiert: [Modul] Homematic Extended (Systemvariablen, Programme, Powermeter u.v.m.) - Seite 3

paresy

Das falsche Verhalten bleibt aber.
Auch wenn du bei einem PHP-Modul aktuell eine Variable beschreiben ‚darfst‘. Es passiert dann nix an der angeschlossenen Hardware.
Auch hier muss dann die dazugehörige Funktion auf die Instanz ausgeführt werden.
Zum Beispiel: LSQ_Play anstatt die Variable Modus auf Play zu setzen.
Michael

Auch das passt zu dem Auto Beispiel (Ich liebe Auto Beispiele - Das könnt echt von mir stammen :D). Du darfst ja an der Tachonadel herum fummeln. Nur auf ne Reaktion musst du dann nicht nicht unbedingt hoffen.

Ok das ist wichtig zu wissen für die Dokumention eines Moduls. Dann sollten in den neuen PHP Modulen immer alle Funktionen aufgeführt sein mit denen sich etwas schalten lässt, ansonsten muss man dann immer erst in den Code schauen, falls man mal nicht etwas über das Webfront, sondern von Extern schalten will.
Dies ist insbesondere ja dann wichtig wenn man etwas über die JSONRPC API schaltet.

Dafür gibt es häufig die Readme.md auf GitHub :slight_smile:
Außerdem zeigt dir die Console auch die Befehle an (ja auch die von dem Modulen).
Michael

Das mit github hatte ich schon gesehen, das ist bei Dir auch alles vorbildlich dokumentiert, im Sonos Modul unter anderem auch. Wäre nur wünschenswert wenn dies grundsätzlich bei allen selbsterstellten Modulen berücksichtigt werden würde, das dies im Readme vermerkt ist. Ich weis zumindest was ich jetzt noch ergänzen muss beim Modulbasteln ;).