[gelöst]hallo,
benötige wiedermal eure Hilfe.
ich versuche einen Gerätewert (E_WS1:is Raining) mit State yes=on oder no=off an eine S7 Steuerung zu übertagen.
mit vielen anderen Signalen funktioniert das bereits, nur mit diesem noch nicht.
Quelle:
Internals:
DEF 0504DD48
IODev TCM_ESP3_0
LASTInputDev TCM_ESP3_0
MSGCNT 3
NAME E_WS1
NR 100
NTFY_ORDER 50-E_WS1
STATE T: 22.6 B: 7 W: 0.0 IR: no
TCM_ESP3_0_DestinationID FFFFFFFF
TCM_ESP3_0_MSGCNT 3
TCM_ESP3_0_PacketType 1
TCM_ESP3_0_RSSI -79
TCM_ESP3_0_ReceivingQuality good
TCM_ESP3_0_RepeatingCounter 0
TCM_ESP3_0_SubTelNum 3
TCM_ESP3_0_TIME 2017-12-30 22:41:07
TYPE EnOcean
READINGS:
2017-12-30 22:41:07 brightness 7
2017-12-30 22:41:07 dayNight day
2017-12-30 22:34:34 hemisphere north
2017-12-30 22:41:07 isRaining no
2017-12-30 22:41:07 state T: 22.6 B: 7 W: 0.0 IR: no
2017-12-30 22:34:34 sunEast 1
2017-12-30 22:34:34 sunSouth 1
2017-12-30 22:34:34 sunWest 1
2017-12-30 22:41:07 temperature 22.6
2017-12-30 22:41:07 windSpeed 0.0
helper:
Attributes:
IODev TCM_ESP3_0
alias Wetterstation_Terasse
eep A5-13-01
event-min-interval .*120
event-on-change-reading .*
event-on-update-reading .*
manufID 00D
room EnOcean,Wetter
subType environmentApp
teachMethod 4BS
Ziel:
Internals:
ADDRESS 24.0
AREA db
DB 30
DEF db 30 24.0
IODev SPS
LASTInputDev SPS
LENGTH 1
MSGCNT 146
NAME ms_regen_zur_SPS
NR 67
POSITION 192
SPS_MSGCNT 146
SPS_TIME 2017-12-30 22:45:33
STATE off
TYPE S7_DWrite
READINGS:
2017-12-30 22:45:33 state off
Attributes:
IODev SPS
room SPS
Auszug aus fhem.cfg
#elttako MS Regensignal
define ms_regen_zur_SPS S7_DWrite db 30 24.0
attr ms_regen_zur_SPS IODev SPS
attr ms_regen_zur_SPS room SPS
[color=red]attr n_ms_regen eventMap no:off yes:on
define n_ms_regen notify E_WS1:isRaining:.* set ms_regen_zur_SPS [E_WS1:isRaining][/color]
Leider funktioniert diese Variante nicht. Wäre sehr dankbar um eine kurze Erklärung was falsch ist und wie die beiden rotmarkierten Zeile aussehen müssen, damit der Wert übertragen wird.
Habe im Einsteiger pdf leider hierzu keine Beispiele gefunden und die Zusammenhänge bei weitem nocht nicht verstanden.
im voraus besten Dank für Eure Hilfe und allen hier einen guten Rutsch nach 2018.
Gruß,
Ralf F
Hi Ralf,
Zunächst einmal ist mit dem rot markieren etwas schief gelaufen, ich nehme aber stark an, es geht um das notify. Auf den ersten Blick scheint das ok, zu sein. Ist "isRaining" denn auch ein Event, oder heißt nur das Reading so? Was erscheint im Event-Monitor, wenn es zu regnen anfängt/aufhört?
P.S.: Bitte lists von devices auch in Code-Tags, das macht es lesbarer.
Grüße,
Oli
Hallo Ralf,
teile dein Problem in zwei Teile:
Funktioniert set ms_regen_zur_SPS [E_WS1:isRaining]
kannst Du in der FHEM Kommandozeile testen.
Wenn ja triggert Dein notify nicht? Mach den Eventmonitor auf und lass Dir ein notify von dem Event erzeugen den Du möchtest -> https://wiki.fhem.de/wiki/Event_monitor
Dann verbindest Du beides und bist wahrscheinlich am Ziel :D
Gruß Otto
hallo,
danke für die Hinweise!
im Eventmonitor schaut das dezeit soaus:
2017-12-31 08:30:06 EnOcean E_WS1 brightness: 7
2017-12-31 08:30:06 EnOcean E_WS1 dayNight: day
2017-12-31 08:30:06 EnOcean E_WS1 isRaining: yes
2017-12-31 08:30:06 EnOcean E_WS1 temperature: 20.7
2017-12-31 08:30:06 EnOcean E_WS1 windSpeed: 0.0
2017-12-31 08:30:06 EnOcean E_WS1 T: 20.7 B: 7 W: 0.0 IR: yes
2017-12-31 08:30:08 S7_DWrite ms_regen_zur_SPS off
d.h. wenn es zu regnen beginnt ändert sich "EnOcean E_WS1 isRaining:" von no auf yes
wenn ich
set ms_regen_zur_SPS [E_WS1:isRaining]
eingebe, kommt die Fehlermeldung: "Unknown argument yes, choose one of ON OFF TRIGGER"
an welcher Stelle muss die Zuordnung yes = on oder 1 und no = off odr 0 erfolgen?
kann man das über attr machen oder muss das im code des notify erfolgen?
oder werden sogar zwie notify benötigt, eines zum "on setzen" und das zweite zum "off setzen"?
Gruß,
Ralf
define n_ms_regen notify E_WS1:isRaining:.* { fhem('set ms_regen_zur_SPS ' ( ReadingsVal('E_WS1','isRaining','no') eq 'yes' ? 'ON' : 'OFF') ) }
So sollte es gehen. Zu mindest sollte das yes oder no in ON oder OFF übersendet werden
hallo CoolTux,
danke für Deine Unterstützung!
hab Deinen Vorschlag probiert. Leider bis jetzt ohne Erfolg.
im eventmonitor bleibt "S7_DWrite ms_regen_zur_SPS off" auch wenn ...isRaining auf yes ist.
hättest Du noch eine Idee was ich probieren kann?
danke,
Gruß,
Ralf
Schauen ob das notify überhaupt getriggert hat. Im Log file nach Ausgaben schauen.
Weshalb möchtest du den Wert raining an die S7 übertragen? Anscheinend kann sie mit dem Wert nichts anfangen ("Unknown argument yes, choose one of ON OFF TRIGGER").
Gruß Jens
hallo,
das notify scheint getriggert zu werden. Unter "Everything ... notify ... steht ein Zeitstempel, der sich bei Statusänderung aktualisiert hinter dem notify.
wie kann ich im eventmonitor sehen ob das notify getriggert hat?
das S7_DWrite ms_regen_zur_SPS bleibt unbeeindruckt auf off :-(
Die SPS will eine 0 oder 1 im Datenbaustein haben.
Ich übetrage die Daten an die SPS weil ich z.B. die Markise mit deren Ausgänge steuere. wenn ich alles mit fhem machen würde müsste ich hier noch viel mehr Fragen stellen ;-)
Gruß,
Ralf
Also nicht ON oder OFF sondern 0 und 1. Dann änder das Notify Mal entsprechend.
Und ich meinte nicht den Eventmonitor sondern das FHEM Logfile. In FHEMWEB linke Seite ganz unten steht Logfile
Das was die S7 erwartet solltest Du in deren Variablen deklaration beeinflussen können.
BOOL, BYTE, INTEGER - das sollte alles möglich sein, zumindest bei der Wago SPS ist es so...
hallo,
im logfile hab ich noch nie geschaut, da der link links unten ausgeblendet war...
es gib dort Fehlermelungen.
logfile Einträge zum notify:
2017.12.31 13:01:48 3: n_ms_regen return value: syntax error at (eval 4325) line 1, near "'set ms_regen_zur_SPS ' ( "
2017.12.31 13:02:17 4: EnOcean E_WS1 received PacketType: 1 RORG: A5 DATA: 77850018 SenderID: 0504DD48 STATUS: 00
2017.12.31 13:02:17 5: Triggering n_ms_regen
2017.12.31 13:02:17 4: n_ms_regen exec { fhem('set ms_regen_zur_SPS ' ( ReadingsVal('E_WS1','isRaining','no') eq 'yes' ? '1' : '0') ) }
2017.12.31 13:02:17 1: ERROR evaluating my $SELF='n_ms_regen';my $EVENT='isRaining: no';my $EVTPART1='no';my $TYPE='EnOcean';my $EVTPART0='isRaining:';my $NAME='E_WS1';{ fhem('set ms_regen_zur_SPS ' ( ReadingsVal('E_WS1','isRaining','no') eq 'yes' ? '1' : '0') ) }: syntax error at (eval 4335) line 1, near "'set ms_regen_zur_SPS ' ( "
2017.12.31 13:02:17 3: n_ms_regen return value: syntax error at (eval 4335) line 1, near "'set ms_regen_zur_SPS ' ( "
derzeitige konfiguration des notify:
define n_ms_regen notify E_WS1:isRaining:.* { fhem('set ms_regen_zur_SPS ' ( ReadingsVal('E_WS1','isRaining','no') eq 'yes' ? '1' : '0') ) }
wo ist der Fehler?
Gruß,
Ralf
Jetzt mach aber mal einen Punkt ;D vor ( ReadingsVal
define n_ms_regen notify E_WS1:isRaining:.* { fhem('set ms_regen_zur_SPS '.( ReadingsVal('E_WS1','isRaining','no') eq 'yes' ? '1' : '0') ) }
Gruß Jens
Jepp, der Punkt fehlt. Sorry. Mit sollte es gehen
hallo,
was wäre die Welt ohne Euch!
jetzt funzt das notify wie es soll :-)
das hätte ich selbst niemals hin bekommen!
hab heute auch gelernt das es ein log.file gibt und wofür es gut ist. :-)))
vielen Dank an alle beteiligten!
und einen guten Rutsch nach 2018
viele Grüße
Ralf
Sag niemals nie :).
Mit der Zeit wirst du dich reinfinden. Übrigens würde ich den Default-Rückgabewert Abfrage ReadingsVal('E_WS1','isRaining','no') in yes ändern. So fährt die Markise bei einer erfolglosen Abfrage nicht aus, sondern ein.
Gruß und Guten Rutsch
Jens