FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: yogi74 am 06 Januar 2017, 19:56:06

Titel: Variablen werte zuweisen ???
Beitrag von: yogi74 am 06 Januar 2017, 19:56:06
Hallo zusammen,

bin momentan leider am ende meines Lateins angekommen.
Ich möchte, wie schon einige vor mir, Werte zu und von einer Wago Steuerung in Fhem verarbeiten.
Die Modbus Verbindung habe ich soweit am laufen (über ModbusTCPserver), das heisst ich kann Werte setzen und diese kommen auch in der Wago an.
Dies funktioniert momentan aber nur wenn ich z.b. per "SET wagowert 1234" diesen Wert manuell setze. Ich möchte aber Werte aus anderen Modulen permanent über die Schnittstelle übertragen, z.b. vom Kostalpiko Modul, etc.

Meine Frage ist nun wie kann ich Messwerte (Readings) von anderen Modulen wie z.b. Temperaturen, Leistung, etc. meiner Variablen/device "wagowert" zuweisen. Und diese dann z.b. alle 30s aktualisieren.

Habe schon alles möglich versucht was ich aus der Hilfe/Doku/Forum entnehmen konnte. Da gibt es ja eigentlich schon einen passenden Thread dazu . https://forum.fhem.de/index.php/topic,12655.0.htm .Leider passt das alles noch nicht so auf meine Anwendung, bzw. hab es nicht ans laufen bekommen.

Ich bin sicher da gibt es sehr wahrscheinlich ne ganz einfach Lösung, hab sie leider noch nicht gefunden.

Danke



Titel: Antw:Variablen werte zuweisen ???
Beitrag von: dev0 am 07 Januar 2017, 06:57:32
Schau Dir mal DOIF (http://fhem.de/commandref.html#DOIF) an.
Titel: Antw:Variablen werte zuweisen ???
Beitrag von: yogi74 am 07 Januar 2017, 21:16:19
Hallo,

danke für die RM. Wollte meine Fragestellung nochmal präzisieren, falls das nicht klar geworden ist.

Habe folgenden Befehl versucht.

define sendtowago at +00:00:10 { my $val = readingsval("Kostal","Total.Energy",99);;\ fhem "set gesamt_kwh $val" }


Was dieser Befehl aus meiner Sicht machen sollte:
Aus dem Modul "Kostal" den Wert (Readings) "Total.Energy" auslesen. Diesen dann auf das Device/Variable "gesamt_kwh" schreiben, welche dann der ModbusTCP Server per Modbsuregister ausliest.
Das soll dann alle 10s passieren.

Wenn ich diesen Befehl ausführe bekomme ich das Timespec wizard  Fenster angezeigt, bei dem ich dann nicht weiss was ich tun soll, hab´s in der Doku noch nicht gefunden ?? Ansonsten passiert nichts.
Wie schon geschrieben funktioniert die Modbus Verbindung.D.h. wenn ich den Wert "gesamt_kwh" manuell setze wird dieser übertragen.

Es geht also nur darum den Wert aus einem Modul einem anderen Modul zu übergeben. Hier von KostalPiko zum ModusTCPServer.

Wenn ich den Befehl DOIF richtig verstehe ist es nur eine etwas bessere Version den AT Befehls und hilft mir jetzt nicht bei der Wert Zuweisung, oder?

Danke









Titel: Antw:Variablen werte zuweisen ???
Beitrag von: CoolTux am 07 Januar 2017, 21:20:24
Code für die DEF nicht für die CFG


define sendtowago at +00:00:10 { fhem "set gesamt_kwh " . ReadingsVal('Kostal','Total.Energy',99) }
Titel: Antw:Variablen werte zuweisen ???
Beitrag von: Puschel74 am 07 Januar 2017, 21:27:07
DOIF vereint notify und at und kann auch nur als notify oder at verwendet werden.

ZitatWas dieser Befehl aus meiner Sicht machen sollte:
Das ist schön aber - es fehlen Infos zu den Geräten die hinterlegt sind.
Ein list von Kostal fehlt, ein list des at fehlt ...

ZitatMeine Frage ist nun wie kann ich Messwerte (Readings) von anderen Modulen wie z.b. Temperaturen, Leistung, etc. meiner Variablen/device "wagowert" zuweisen. Und diese dann z.b. alle 30s aktualisieren.
Module generieren keine "Messwerte" - das machen die Geräte aka Devices.
Devices generieren Events je nachdem welche Werte gesendet werden - siehe EventMonitor.
Wenn ein Device einen Wert sendet wird in FHEM ein Event generiert - je nach Attribut (event-on-.* siehe commandref oder Wiki oder SuFu).
Auf diese Events kannst du in FHEM dann per notify/DOIF reagieren und entsprechend weiter verfahren - FHEM-Code oder Perl, je nachdem was dir eher liegt.
Titel: Antw:Variablen werte zuweisen ???
Beitrag von: yogi74 am 07 Januar 2017, 22:12:43
Hallo,

vielen Dank @ cooltux, der Befehl tut jetzt was er soll, zumindest einmal. Bekomme nach den Ausführen wieder das Timespec wizard Fenster angezeigt. Was muss man hier machen ?  Wenn ich hier per SET auf active setze oder MODIFY klicke bekomme ich die Fehlermeldung "Please define sendtowago first" ?? Genau das mache ich doch mit dem Befehl ? Der AT wird auch nicht gespeichert und laut Eventmonitor auch nicht zyklisch ausgeführt.

Im Anhang noch das Listing,falls das das Richtige ist was gemeint war.

Danke
Titel: Antw:Variablen werte zuweisen ???
Beitrag von: yogi74 am 07 Januar 2017, 22:18:29
OK, hab mir gerade nochmal was Wiki zu AT durchgelesen, geht so natürlich nicht periodisch.. D.h. soweit bin ich jetzt nen Schritt weiter was die Übergabe des Wertes angeht, Danke nochmal.