FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: danieljo am 07 September 2015, 20:58:50

Titel: Variable aus device an Befehl anhängen
Beitrag von: danieljo am 07 September 2015, 20:58:50
Ich möchte an einem Befehl den ich in die commande Zeile in FHEM eingebe eine variable anhängen und somit mit dem Befehl übergeben.

Der Befehl lautet:

set RemotePI cmd set Aquarium_Thermostat desired 27.0

Anstatt der 27.0 soll nun die variable eingesetzt werden und zwar aus dem Device

cloneDummy "NAME = FHEM_Aquarium_Thermostat" attribut "desired" dort ist ein Wert mit 27.5 angegeben. Dieser soll ausgelesen werden und an den Befehl angängt werden.

MFG, Daniel Joachims
Titel: Variable aus device an Befehl anhängen
Beitrag von: SvenJust am 07 September 2015, 21:14:42
Mit ReadingsVal können Readings aus einem Device gelesen werden. Die Syntax steht in der Commandref.

VG
Sven
Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: justme1968 am 07 September 2015, 21:27:48
wenn den fhem aktuell ist geht das mit [<device>:<reading>]. also etwa so:set RemotePI cmd set Aquarium_Thermostat desired [FHEM_Aquarium_Thermostat:desired]

gruss
  andre
Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: danieljo am 08 September 2015, 18:30:35
Danke leider funktioniert das nicht so wie gedacht.

Da RFHEM "RemotePI" den Ausdruck "[FHEM_Aquarium_Thermostat:desired]" nicht auswertet sondern zu eins so übernimmt und mit übermittelt.

Habs auch schon mit "{ ReadingsVal ( "FHEM_Aquarium_Threshold","desired","" ) } versucht genau das gleiche im Log steht dann:

015.09.08 18:21:56 5: Cmd: >set Aquarium_Thermostat desired [Aquarium_Thermostat:desired_value]<
2015.09.08 18:22:13 5: Cmd: >set Aquarium_Thermostat desired { ReadingsVal ( "Aquarium_Thermostat","desired_value","" ) }<


Anstatt der Ausdrücke sollte dort die ausgelesen Variable des MASTERS von dem ich diesen Befehl sende stehen. Und nicht erst auf dem SLAVE ausgewertet werden.

Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: justme1968 am 08 September 2015, 18:34:28
der [] ausdruck wird lokal von fhem ausgewertet. du musst eventuell das featureLevel attribut noch setzen.

mit ReadingsVal musst du das komplette kommando zuerst auf perl ebene zusammen bauen und dann mit einem fhem( "set ..." ) ans remote device senden.

gruss
  andre
Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: danieljo am 08 September 2015, 18:43:26
Habem ir gerade noch was RFHEM Modul durchgelesen dort steht drin das:

komplexe Sachen mit Perl-code wie

set RemotePI cmd define a1 at 17:00:00 {fhem("set xyz on");}


gehen nicht da

fhem("set xyz on");

von fhem gleich versucht wird auszuführen ...

Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: justme1968 am 08 September 2015, 18:46:54
du musst dich entscheiden auf welcher seite du was ausführen willst und die kommandos dann entweder auf fhem oder perl ebene zusammenbauen.

ich denke du solltest versuchen alles auf einem zentralen system zu halten und an die anderen Systeme wenn überhaupt nur kommandos senden die direkt ausgeführt werden. alles andere erzeugt nur ein verteiltes system das weniger übersichtlich ist und keinerlei vorteile hat.

gruss
  andre
Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: danieljo am 08 September 2015, 18:55:46
Ok ich habs jetzt das featureLevel Attribut fehlte. Jetzt geht es so wie es soll.

Jetzt kann ich bei veränderung des Threshold Mdouls auf dem MASTER die entsprechenden Werte an den auf dem SLAVE definiertem Threshold übermitteln. Wunderbar.

Mein Problem ist etwas komplexy ich gebe es ja zu.

Der MASTER soll als Zentrale dienen. Auf dem SLAVE ist ein eigenständiges Threshold definiert. Welches auch immernoch funktionieren soll wenn der MASTER mal ausfallen sollte sprich: der SLAVE ist ein BACKUP für Threshold. Damit ich aber vom MASTER aus den Threshold steuern/verändern möchte sollten die Werte bei änderung des Threshold auf dem SLAVe geschickt werden.

Titel: Antw:Variable aus device an Befehl anhängen
Beitrag von: justme1968 am 08 September 2015, 19:20:24
unterm strich hast du mit deinem master und slave system aber nicht die zuverlässigkeit erhöht sondern doppelt so viele stellen an denen etwas schief gehen kann.

wenn du die zuverlässigkeit erhöhen bzw. die ausfall zeit minimieren willst ist es besser wenn du nur ein system alles machen lässt und davon ein aktuelles backup. wenn das haupt system nicht geht ersetzt du die hardware und spielst eventuell das backup wieder ein.

damit hat du weniger komplexität und mehr sicherheit.