FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ralf_F am 30 Dezember 2017, 22:57:47

Titel: Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 30 Dezember 2017, 22:57:47
[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

Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: KernSani am 30 Dezember 2017, 23:31:33

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

Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Otto123 am 30 Dezember 2017, 23:41:47
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 31 Dezember 2017, 08:46:46
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: CoolTux am 31 Dezember 2017, 09:01:43

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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 31 Dezember 2017, 09:30:55
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: CoolTux am 31 Dezember 2017, 10:07:16
Schauen ob das notify überhaupt getriggert hat. Im Log file nach Ausgaben schauen.
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: JensS am 31 Dezember 2017, 10:37:35
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 31 Dezember 2017, 11:25:03
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: CoolTux am 31 Dezember 2017, 11:31:55
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: der-Lolo am 31 Dezember 2017, 12:53:35
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...
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 31 Dezember 2017, 13:17:55
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: JensS am 31 Dezember 2017, 14:16:32
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: CoolTux am 31 Dezember 2017, 14:21:25
Jepp, der Punkt fehlt. Sorry. Mit sollte es gehen
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: Ralf_F am 31 Dezember 2017, 16:32:40
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
Titel: Antw:Gerätewert mit notify an S7 übertragen
Beitrag von: JensS am 31 Dezember 2017, 17:59:02
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