Hauptmenü

Daten weiterschicken

Begonnen von Luftikuss, 14 November 2019, 16:48:40

Vorheriges Thema - Nächstes Thema

Luftikuss

Hallo Leute,
ich habe leider nicht viel Ahnung von Scripte und hoffe ein wenig Hilfe von euch zu bekommen.

Zu meinem Vorhaben:
Ich möchte FHEM als Gateway benutzen um Daten einer Helios KWL zu einer Simatic S7 zu senden bzw. Befehle von der S7 zu der KWL.
Ich habe mir jetzt ein Script zusammen gebastelt um die Daten die ich benötige zyklisch aus der KWL zu holen. Das Funktioniert auch ganz gut.

Zum anderen habe ich Statische Daten von der S7 lesen und schreiben können.

Wie kann ich jetzt die beiden miteinander kommunizieren lassen?

fhem.cfg:

#############Haussteuerung S7#################
define Haus_S7 S7 192.168.1.33 0 2
attr Haus_S7 room Siemens_S7

define WZ_Temperatur S7_ARead db 501 82 float
attr WZ_Temperatur IODev Haus_S7
attr WZ_Temperatur group Temperaturen
attr WZ_Temperatur room Siemens_S7


#################Lüftungsanlage##################
{defineHeliosKWL("Helios_KWL","192.168.1.39","Helios_KWL")}

{HeliosKWL("Helios_KWL","manual_poll")}

{HeliosKWL("Helios_KWL","short_poll")}

{HeliosKWL("Helios_KWL","long_poll")}

attr Helios_KWL userattr dev-defShowGet dev-h-defPoll dev-h-read dev-h-write dev-timing-timeout obj-h0-format obj-h0-len obj-h0-poll obj-h0-reading obj-h0-set obj-h1-bswapRegs obj-h1-format obj-h1-len obj-h1-map obj-h1-poll obj-h1-reading obj-h1-set obj-h1-setexpr obj-h1-textArg obj-h1-unpack obj-h180-format obj-h180-len obj-h180-poll obj-h180-reading obj-h180-set sortby verbose
attr Helios_KWL dev-defShowGet 1
attr Helios_KWL dev-h-defPoll 0
attr Helios_KWL dev-h-read 3
attr Helios_KWL dev-h-write 16

define di_KWL_update DOIF ([+:01]) (set KWL_Auslesen_Block on)({Fn_KWL_Luefterstufe_auslesen})({Fn_KWL_Abluft_auslesen})({Fn_KWL_Aussenluft_auslesen})({Fn_KWL_Betriebsart_auslesen})({Fn_KWL_Fortluft_auslesen})({Fn_KWL_Zuluft_auslesen})({Fn_KWL_Restlaufzeit_auslesen})({Fn_KWL_Fehler_auslesen})({Fn_KWL_Warnung_auslesen})(set KWL_Auslesen_Block off)
attr di_KWL_update do always
attr di_KWL_update room Helios_KWL
attr di_KWL_update verbose 0
attr di_KWL_update wait 0,5,5,5,5,5,5,5,5,5,0

define KWL_Temp_Aussenluft dummy
attr KWL_Temp_Aussenluft event-on-change-reading state
attr KWL_Temp_Aussenluft room Helios_KWL

define KWL_Temp_Zuluft dummy
attr KWL_Temp_Zuluft event-on-change-reading state
attr KWL_Temp_Zuluft room Helios_KWL

define KWL_Temp_Fortluft dummy
attr KWL_Temp_Fortluft event-on-change-reading state
attr KWL_Temp_Fortluft room Helios_KWL

define KWL_Temp_Abluft dummy
attr KWL_Temp_Abluft event-on-change-reading state
attr KWL_Temp_Abluft room Helios_KWL

define KWL_Temp_Betriebsart dummy
attr KWL_Temp_Betriebsart event-on-change-reading state
attr KWL_Temp_Betriebsart room Helios_KWL

define KWL_Temp_Luefterstufe dummy
attr KWL_Temp_Luefterstufe event-on-change-reading state
attr KWL_Temp_Luefterstufe room Helios_KWL

define KWL_Filter_Restlaufzeit dummy
attr KWL_Filter_Restlaufzeit event-on-change-reading state
attr KWL_Filter_Restlaufzeit room Helios_KWL

define KWL_Anlage_Fehler_Nr dummy
attr KWL_Anlage_Fehler_Nr event-on-change-reading state
attr KWL_Anlage_Fehler_Nr room Helios_KWL

define KWL_Anlage_Warnung_Nr dummy
attr KWL_Anlage_Warnung_Nr event-on-change-reading state
attr KWL_Anlage_Warnung_Nr room Helios_KWL


define KWL_Auslesen_Block dummy
attr KWL_Auslesen_Block event-on-change-reading state
attr KWL_Auslesen_Block room Helios_KWL

###########Programmm###############

define Test_Float S7_AWrite DB 501 106 float
attr Test_Float IODev Haus_S7
attr Test_Float event-on-change-reading state
attr Test_Float group Senden_an_S7
attr Test_Float room Siemens_S7
attr Test_Float stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C"}


define Test_Float dummy
attr Test_Float group Senden_an_S7
attr Test_Float room Siemens_S7
attr Test_Float stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C"}

define KWL_Temp_Abluft_notify notify KWL_Temp_Abluft {\
fhem "set Test_Float Siemens_S7".ReadingsVal("KWL_Temp_Abluft","state","0");;\
}
attr KWL_Temp_Abluft_notify group Senden_an_S7
attr KWL_Temp_Abluft_notify room Siemens_S7



Shadow3561


Luftikuss

#2
notify habe ich im Script benutzt.
Allerdings sehe ich im Protokoll das der aktuelle Wert zwar in die Variable der S7 geschrieben wird aber in der selben Sekunde gleich wieder mit 0 beschrieben wird.

define KWL_Temp_Abluft_notify notify KWL_Temp_Abluft {\
fhem "set Test_Float Siemens_S7".ReadingsVal("KWL_Temp_Abluft","state","0");;\


Oder ist der Befehl nicht richtig beschrieben?

amenomade

Also.. es gibt mindestens einen Fehler im Befehl. Ein Leerzeichen fehlt. Statt:
fhem "set Test_Float Siemens_S7".ReadingsVal("KWL_Temp_Abluft","state","0");;\
soll
fhem "set Test_Float Siemens_S7 ".ReadingsVal("KWL_Temp_Abluft","state","0");;\

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Luftikuss

ok ich habe das Leerzeichen eingefügt.
Nun steht im Log beim ersten Schreiben der Variable kein Wert mehr dahinter.
Beim darauffolgende Schreiben der Variable steht wieder eine 0.

amenomade

Am besten, den Eventmonitor aufmachen, das gewünsche Event von KWL_Temp_Abluft markieren, und auf "Create/modify Device" klicken.

In deiner Log sehe ich kein Event auf KWL_Temp_Abluft
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus