S7 300 Anbindung an Homematic Fensterkontakt

Begonnen von trickster444, 22 Oktober 2017, 11:17:29

Vorheriges Thema - Nächstes Thema

trickster444

Hallo,

ich habe folgendes Problem. Ich will den Zustand des Homematic Fensterkontaktes in den S7 Merker M62.4 schreiben um damit meine Heizung in diesem Raum abzustellen. Der Fensterkontakt ist in der Homematic angelernt und ich sehe auch den Wechsel in FHEM von 0-->1. Leider bekomme ich diesen Wert nicht in die SPS geschrieben.

Wenn ich den Merker "defmod FensterArbeitszimmer_M_62_4" über den Set On Befehl setze dann kommt das Signal auch richtig in der SPS an.

Ich vermute es liegt an dem Notify. Hat jemand eine Idee was ich falsch mache ?

defmod ArbeitszimmerStatus notify FensterArbeitszimmer:on set FensterArbeitszimmer_M ON

defmod FensterArbeitszimmer_M_62_4 S7_DWrite flags 0 62.4

defmod FensterArbeitszimmer HMCCUDEV OEQ0164XXX
attr FensterArbeitszimmer IODev CCU2
attr FensterArbeitszimmer ccureadingfilter (STATE|LOWBAT|ON_TIME)
attr FensterArbeitszimmer icon fts_window_1w_open
attr FensterArbeitszimmer room Testraum
attr FensterArbeitszimmer statevals on:true,off:false
attr FensterArbeitszimmer webCmd on:off

Danke !!

Trickster444

CoolTux


defmod ArbeitszimmerStatus notify FensterArbeitszimmer:on

Zu mindest meine Fensterkontakte liefern ein open oder closed. Sicher das es bei dir on ist? Was liefert der Eventmonitor.
Bitte benutze Codetags, die Raute oben in der Symbolleiste des Forums.
Und ein list der Devices ist immer besser.
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

CoolTux

Ah sehe gerade das hast ne CCU2 angebunden.
Ok, aber gerade deswegen brauchen wir Auszug aus dem Eventmonitor und list der beiden Devices
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

trickster444

So, hier nochmal der korrekte Code

defmod ArbeitszimmerStatus notify FensterArbeitszimmer:on set FensterArbeitszimmer_M_62_4 ON
attr ArbeitszimmerStatus room Testraum

setstate ArbeitszimmerStatus active
setstate ArbeitszimmerStatus 2017-10-22 11:55:20 state active



defmod FensterArbeitszimmer_M_62_4 S7_DWrite flags 0 62.4
attr FensterArbeitszimmer_M_62_4 IODev mySPS
attr FensterArbeitszimmer_M_62_4 room Testraum

setstate FensterArbeitszimmer_M_62_4 off
setstate FensterArbeitszimmer_M_62_4 2017-10-22 11:03:35 state off



defmod FensterArbeitszimmer HMCCUDEV OEQ0164649
attr FensterArbeitszimmer IODev CCU2
attr FensterArbeitszimmer ccureadingfilter (STATE|LOWBAT|ON_TIME)
attr FensterArbeitszimmer room Testraum
attr FensterArbeitszimmer webCmd on:off

setstate FensterArbeitszimmer 1
setstate FensterArbeitszimmer 2017-10-21 15:51:38 1.LOWBAT 0
setstate FensterArbeitszimmer 2017-10-21 15:51:38 1.STATE 1
setstate FensterArbeitszimmer 2017-10-21 15:51:38 hmstate 1
setstate FensterArbeitszimmer 2017-10-22 12:19:07 state Initialized



Das Fenster ist aktuell im Zustand "offen" deshalb der State"1"
Die Eventliste kann ich schicken sobald ich vor Ort bin und nicht über Fernwartung verbundenn bin.

TRICKSTER444

CoolTux

Damit kann ich nichts anfangen.
Ich bräuchte bitte ein list, kein Code.

In FHEMWEB gibst du in der Commandline ein
list DEVICENAME

Ausgabe dann hier posten.
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

trickster444

Ich hoffe jetzt ist es richtig.

2017-10-22 17:14:21 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:23 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:24 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:25 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:27 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:30 HMCCUDEV FensterArbeitszimmer 1.LOWBAT: 0
2017-10-22 17:14:30 HMCCUDEV FensterArbeitszimmer 1.STATE: 0
2017-10-22 17:14:30 HMCCUDEV FensterArbeitszimmer 0
2017-10-22 17:14:30 HMCCUDEV FensterArbeitszimmer hmstate: 0
2017-10-22 17:14:30 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:31 HMCCUDEV FensterArbeitszimmer 1.STATE: 1
2017-10-22 17:14:31 HMCCUDEV FensterArbeitszimmer 1
2017-10-22 17:14:31 HMCCUDEV FensterArbeitszimmer 1.LOWBAT: 0
2017-10-22 17:14:31 HMCCUDEV FensterArbeitszimmer hmstate: 1
2017-10-22 17:14:32 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:33 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:35 S7_DWrite FensterArbeitszimmer_M_62_4 off
2017-10-22 17:14:36 S7_DWrite FensterArbeitszimmer


Internals:
   CFGFN
   DEF        OEQ0377018
   IODev      CCU2
   NAME       Garage
   NR         84837
   STATE      0
   TYPE       HMCCUDEV
   ccuaddr    OEQ0377018
   ccudevstate active
   ccuif      BidCos-RF
   ccuname    HM-LC-Sw1-FM OEQ0377018
   ccutype    HM-LC-Sw1-FM
   channels   2
   statevals  devstate
   READINGS:
     2017-10-21 19:48:38   1.STATE         0
     2017-10-21 19:48:37   1.WORKING       0
     2017-10-21 19:48:38   hmstate         0
     2017-10-21 19:48:38   state           0
   hmccu:
     dp:
       0.STICKY_UNREACH:
         OSVAL      1
         OVAL       1
         SVAL       1
         VAL        1
       0.UNREACH:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.STATE:
         OSVAL      1
         OVAL       1
         SVAL       0
         VAL        0
       1.WORKING:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
Attributes:
   IODev      CCU2
   icon       fts_garage
   room       Testraum



Internals:
   ADDRESS    62.4
   AREA       flags
   CFGFN
   DB         0
   DEF        flags 0 62.4
   IODev      mySPS
   LASTInputDev mySPS
   LENGTH     1
   MSGCNT     566806
   NAME       FensterArbeitszimmer_M_62_4
   NR         191296
   POSITION   500
   STATE      off
   TYPE       S7_DWrite
   mySPS_MSGCNT 566806
   mySPS_TIME 2017-10-22 16:09:04
   READINGS:
     2017-10-22 16:09:04   state           off
Attributes:
   IODev      mySPS
   room       Testraum
   webCmd     TRIGGER



Internals:
   CFGFN
   DEF        FensterArbeitszimmer:on set FensterArbeitszimmer_M_62_4 TRIGGER
   NAME       ArbeitszimmerStatus
   NOTIFYDEV  FensterArbeitszimmer
   NR         181309
   NTFY_ORDER 50-ArbeitszimmerStatus
   REGEXP     FensterArbeitszimmer:on
   STATE      active
   TYPE       notify
   READINGS:
     2017-10-22 12:57:22   state           active
Attributes:
   room       Testraum


Danke


CoolTux

FensterArbeitszimmer_M_62_4 ist ungleich FensterArbeitszimmer
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

trickster444


Hallo,

also ich habe es jetzt geschafft mit dem Notify:

defmod ArbeitszimmerStatus notify FensterArbeitszimmer set FensterArbeitszimmer_M_62_4 on

den Merker in der SPS zu setzten, leider bleibt der Merker dann immer anstehen in der SPS ist. Ich würde gerne der Merker auf "1" schalten wenn der Fensterkontakt auf "1" ist und wieder auf "0" schalten wenn der Fensterkontakt wieder auf "0" ist. Das Rücksetzten bei Notify scheint nicht zu funktionieren.

Hier nochmal der aktuelle Code.

FensterArbeitszimmer --> der Fensterkontakt der in die CCU2 geht

Internals:
   CFGFN
   DEF        OEQ0164649
   IODev      CCU2
   NAME       FensterArbeitszimmer
   NR         181091
   STATE      1
   TYPE       HMCCUDEV
   ccuaddr    OEQ0164649
   ccudevstate active
   ccuif
   ccuname    HMW-RCV-50 BidCoS-Wir:0
   ccutype    HM-Sec-SC-2
   channels
   statevals  devstate
   READINGS:
     2017-10-22 15:52:25   0.LOWBAT        0
     2017-10-23 19:26:07   1.LOWBAT        0
     2017-10-23 19:26:07   1.STATE         1
     2017-10-23 19:26:07   hmstate         1
     2017-10-23 19:26:07   state           1
   hmccu:
     dp:
       0.LOWBAT:
         OSVAL      1
         OVAL       1
         SVAL       0
         VAL        0
       1.ERROR:
         OVAL       0
         VAL        0
       1.LOWBAT:
         OSVAL      0
         OVAL       0
         SVAL       0
         VAL        0
       1.STATE:
         OSVAL      0
         OVAL       0
         SVAL       1
         VAL        1
Attributes:
   IODev      CCU2
   ccureadingfilter (STATE|LOWBAT|ON_TIME)
   room       Testraum
   webCmd     on:off


FensterArbeitszimmer_M_62_4 --> der Merker der in der SPS gesetzt werden soll

Internals:
   ADDRESS    62.4
   AREA       flags
   CFGFN
   DB         0
   DEF        flags 0 62.4
   IODev      mySPS
   LASTInputDev mySPS
   LENGTH     1
   MSGCNT     662274
   NAME       FensterArbeitszimmer_M_62_4
   NR         191296
   POSITION   500
   STATE      off
   TYPE       S7_DWrite
   mySPS_MSGCNT 662274
   mySPS_TIME 2017-10-24 15:13:04
   READINGS:
     2017-10-24 15:13:04   state           off
Attributes:
   IODev      mySPS
   room       Testraum
   webCmd     trigger


ArbeitszimmerStatus --> Notify das den Merker schalten soll wenn der Fensterkontakt geschaltet wird.

Internals:
   CFGFN
   DEF        FensterArbeitszimmer set FensterArbeitszimmer_M_62_4 on
   NAME       ArbeitszimmerStatus
   NOTIFYDEV  FensterArbeitszimmer
   NR         181309
   NTFY_ORDER 50-ArbeitszimmerStatus
   REGEXP     FensterArbeitszimmer
   STATE      2017-10-23 19:26:07
   TYPE       notify
   READINGS:
     2017-10-23 19:24:37   state           active
Attributes:
   room       Testraum


Danke.

CoolTux


defmod ArbeitszimmerStatus notify FensterArbeitszimmer.[0-1] { fhem("set FensterArbeitszimmer_M_62_4 " . ($EVENT == 1 ? "on" : "off") );
}

Wenn 1 dann sende on ansonsten Off
Passt das so? Kann gerade nicht testen.
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

trickster444

 Genial !!!!! Das passt !!!

Super, vielen Dank !

Kannst du mir mal noch erklären was die Befehle genau machen ?

Trickster444

CoolTux

FensterArbeitszimmer.[0-1]
RegEx auf die er matchen/triggern soll

{ fhem("set FensterArbeitszimmer_M_62_4 "
{ Auf Perlebene gehen

fhem("
FHEM Befehl ausführen

set FensterArbeitszimmer_M_62_4
FHEM Befehl

. ($EVENT == 1 ? "on" : "off")
Punkt bedeutet String anfügen und der Rest ist eine Bedingungsabfrage


Ist einfaches Perl und schnell gelernt.



Grüße
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

trickster444

Hallo CoolTux,

Ich habe noch ein Problem das der Befehl immer nur triggert wird bei Signalwechsel und nicht den Signalzustand von FensterArbeitszimmer weitergibt. Das Problem ist bei Hardwareänderungen und Neustart der SPS wird der Status des Merkers getriggert, obwohl ich nicht weiß ob das Fenster offen oder geschlossen ist.

Danke für die Hilfe im Voraus.

CoolTux

Lass uns schauen ob ich Dich richtig verstanden habe.
Wenn Du zum Beispiel FHEM neu startest, kann es sein das im Device FensterArbeitszimmer_M_62_4 ein on steht obwohl im Device FensterArbeitszimmer eine 0 steht?
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

trickster444

Das Problem ist der Neustart der SPS, dann werden die Merker auf 0 gesetzt und ich bekommen dann keinen sauberen Status auch wenn der Fensterkontakt auf 1 steht. Erst wenn der Kontakt auf 0 wechselt , dann wird das Signal in der SPS getriggert. Also habe ich nach dem Neustart der SPS keinen eindeutigen Zustand ob die Fenster offen oder geschlossen sind. Ist es möglich den Status des Fensterkontaktes aus der CCU an die SPS zu schicken ? Was ich versucht habe, war der Befehlt set:on, hat aber nicht funktioniert.


Danke

CoolTux

Bekommt FHEM einen Neustart der SPS mit? Eventuell kann man hier ein Event triggern um eine Abfrage zu starten.
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