hallo zusammen,
leider bin ich noch Anfänger in der fhem-Welt und versuche vergeblich den variablen Zahlenwert 262 im STATE von "Wirkleistung_EVU in STATE von "Zaehler_EVU_zur_SPS " zu kopieren / übertragen. Der Variablenwert wird bereits erfolgreich zu einer SPS übertragen, aber leider nur wenn ich diesen mit dem set-Button manuell setze (2222).
egal was ich probiert habe es funzt nicht.
Wie ist die Vorgehensweise um dieses Problem zu lösen?
Quelle:
Internals:
NAME Wirkleistung_EVU
NR 20
STATE 262
TYPE dummy
READINGS:
2017-09-04 22:55:56 state 262
Attributes:
event-on-change-reading state
Ziel:
Internals:
ADDRESS 4
AREA db
DATATYPE s16
DB 30
DEF db 30 4 s16
IODev SPS
LASTInputDev SPS
LENGTH 2
MSGCNT 903
NAME Zaehler_EVU_zur_SPS
NR 36
SPS_MSGCNT 903
SPS_TIME 2017-09-04 23:15:03
STATE 2222
TYPE S7_AWrite
READINGS:
2017-09-04 23:15:03 state 2222
Attributes:
IODev SPS
room SPS
wäre um Unterstützung sehr dankbar!
danke im Voraus.
Ralf
Ein Notify auf Wirkleistung_EVU (mal im Eventmonitor schauen wenn sich der Wert ändert und dann ein notify "kreieren lassen") und dort dann das set ausführen:
set Zaehler_EVU_zur_SPS $EVENT
(evtl. auch $EVTPART0 bzw. $EVTPART1)
Siehe auch:
https://wiki.fhem.de/wiki/Event
https://wiki.fhem.de/wiki/Notify
Aktuell nur mobil, daher so kurz...
Gruß, Joachim
Erstmal ist es für uns Helfenden besser wenn Du Deine Ausgabe der Geräte in Code Tags bringst. Das ist das # Zeichen in der Symbolleiste des Forumeditors.
Dann musst Du wissen das in FHEM immer mit Events gearbeitet wird. Wenn Du also etwas machen möchtest muß vorher eine Aktion stattgefunden haben. Ein Event muß ersichtlich sein im Eventmonitor und darauf kannst Du dann ein Notify ansprechen lassen.
In Deinem Fall reicht ein Notify welches auf ein Event Deines Quelldevices reagiert, und den Event eins zu eins an Dein Ziel durch reicht.
Wo bei jetzt wo ich so schaue, wäre nicht eher das Zaehler_EVU_zur_SPS Device die Quelle und Du willst in den Dummy schreiben?
@Ralf_F Hier liegt ein grundsätzliches Verständnisproblem vor.
Du solltest Dich nicht um den Wert in "STATE" kümmern, das ist nur ein interner Wert, der "irgendwie" angezeigt wird. Wenn Du in dem device das Attribut stateFormat auf "Donnerstag" stellst, dann steht Donnerstag in STATE.
Was Du eigentlich tun willst, ist den Messwert in "state" verarbeiten. Das ist der Wert der in den readings steht und der tatsächlich den "Messwert" darstellt.
FHEM erzeugt einen event, wenn ein reading beschrieben wird. Diesen event kannst Du auswerten, das haben die Vorredner hier im Thread bereits beschrieben.
danke für Eure Antworten :-)
definitiv war ich auf dem falschen Weg mit dem STATE... danke für Eure Hinweise.
ich möchte vom dummy als Quelle den Messertwert in das Ziel-Device "Zaehler_zur_SPS" schreiben.
derzeit schaut die fhem.cfg so aus:
define Zaehler_EVU_zur_SPS S7_AWrite db 30 4 s16
attr Zaehler_EVU_zur_SPS IODev SPS
attr Zaehler_EVU_zur_SPS room SPS
define notify_1 notify Wirkleistung_EVU:.* set Zaehler_EVU_zur_SPS:.* $EVENT
Auszug Event Monitor:
2017-09-05 08:45:59 S7_AWrite Zaehler_EVU_zur_SPS 2222
2017-09-05 08:46:04 S7_AWrite Zaehler_EVU_zur_SPS 2222
2017-09-05 08:46:06 dummy Wirkleistung_EVU -107
egal was ich eingebe $EVENTPART0 ,1 ,2 im Zaehler_EVU_zur_SPS steht immer nur 2222
fehlt bei dem notify noch was?
und wie oft wird dieses in dieser Konfiguration ausgeführt?
Gruß,
Ralf
falsch:
$EVENTPART0 ,1 ,2
richtig:
$EVTPART0 ,1 ,2
Ausserdem verstehe ich diesen set Befehl ehrlich gesagt nciht
set Zaehler_EVU_zur_SPS:.* $EVENT
set Zaehler_EVU_zur_SPS $EVENT
wollte ich grade noch schreiben, dass das auch falsch ist :)
Ich hab das grade mal alles bei mir nachgebaut.
define notify_1 notify Wirkleistung_EVU:.* set Zaehler_EVU_zur_SPS $EVENT
funktioniert bei mir einwandfrei.
vielen Dank betateilchen! und auch an die anderen!
Problem gelöst!
ich hab in der fhem.cfg den code manell angepasst, da ich das über die buttons in der notify-Konfiguration noch nicht hin bekomme :
define notify_1 notify Wirkleistung_EVU:.* set Zaehler_EVU_zur_SPS $EVENT
damit wird der Messwert nun korrekt übertragen :-)
danke und schönen Tag
Gruß,
Ralf
Bitte Gelöst nicht vergessen zu setzen :)