Gerätewert mit notify an S7 übertragen

Begonnen von Ralf_F, 30 Dezember 2017, 22:57:47

Vorheriges Thema - Nächstes Thema

Ralf_F

[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


KernSani


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

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ralf_F

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

CoolTux


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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Ralf_F

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

CoolTux

Schauen ob das notify überhaupt getriggert hat. Im Log file nach Ausgaben schauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

JensS

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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Ralf_F

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

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

der-Lolo

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...

Ralf_F

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

JensS

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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

CoolTux

Jepp, der Punkt fehlt. Sorry. Mit sollte es gehen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Ralf_F

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