Guten morgen zusammen,
ich wage mich hiermit aus dem Anfänger Forum heraus, da ich denke dass so besser passt.
Ich selber bin Automatisierer und damit "faul" und immer bestrebt die Sache zu verbessern.
Ich habe in meinem Haus die vorhandene S7 erfolgreich (hoffe ich zumindest) mit FHEM und HomeKit gekoppelt.
In der S7 habe ich fast alle Schaltaktoren als "Stomstoßrelais" nachgebildet. Die Kopplung mit FHEM habe ich folgender Maßen ausgeführt:
Dummy:
Internals: 
   NAME       Licht_Einfahrt 
   NR         41 
   STATE      off 
   TYPE       dummy 
   Readings: 
     2017-02-26 08:52:44   state           off 
Attributes: 
   genericDeviceType light 
   group      Licht Außenbereich 
   homebridgeMapping On=state,valueOn=on,cmdOn=on,cmdOff=off 
   room       Beleuchtung,Homekit 
   setList    on off 
   webCmd     on : off 
Ein Device um den Status von der SPS einzulesen:
Internals: 
   ADDRESS    3.2 
   AREA       db 
   CHANGED 
   DB         800 
   DEF        db 800 3.2 
   IODev      SPS 
   LASTInputDev SPS 
   LENGTH     1 
   MSGCNT     110027 
   NAME       S7Licht_Einfahrt 
   NR         259 
   POSITION   26 
   SPS_MSGCNT 110027 
   SPS_TIME   2017-02-26 08:58:01 
   STATE      off 
   TYPE       S7_DRead 
   Readings: 
     2017-02-26 08:58:01   state           off 
Attributes: 
   IODev      SPS 
   event-min-interval .*:600 
   event-on-change-reading state 
Ein Device um von FHEM zur SPS den Status ändern zu können:
Internals: 
   ADDRESS    3.2 
   AREA       db 
   CHANGED 
   DB         802 
   DEF        db 802 3.2 
   IODev      SPS 
   LASTInputDev SPS 
   LENGTH     1 
   MSGCNT     110077 
   NAME       S7Licht_Einfahrt_ein 
   NR         218 
   POSITION   26 
   SPS_MSGCNT 110077 
   SPS_TIME   2017-02-26 08:58:55 
   STATE      off 
   TYPE       S7_DWrite 
   Readings: 
     2017-02-26 08:58:55   state           off 
Attributes: 
   IODev      SPS 
   event-min-interval .*:600 
   event-on-change-reading state 
Um am Ende die gewünschte Funktion zu erhalten gibt es zwei Notifys:
Einmal wird einfach der Staus von der SPS gelesen und auf das Dummy geschrieben.
Internals: 
   DEF        S7Licht_Einfahrt set Licht_Einfahrt $EVENT 
   NAME       n_S7Licht_Einfahrt 
   NR         65 
   NTFY_ORDER 50-n_S7Licht_Einfahrt 
   REGEXP     S7Licht_Einfahrt 
   STATE      2017-02-26 08:52:44 
   TYPE       notify 
Weiterhin wird dann geschaut ob in FHEM oder Homekit eine Schalthandlung vorgenommen wurde und wenn dies passiert ist, das Bit an die SPS abgesetzt.
Internals: 
   DEF        Licht_Einfahrt { 
if ( (Value("S7Licht_Einfahrt") eq "off" and Value("Licht_Einfahrt") eq "on") or (Value("S7Licht_Einfahrt") eq "on" and Value("Licht_Einfahrt") eq "off") ) 
  { fhem ("set S7Licht_Einfahrt_ein on") } else 
  { fhem ("set S7Licht_Einfahrt_ein off") } 
} 
   NAME       n_Licht_Einfahrt 
   NOTIFYDEV  Licht_Einfahrt 
   NR         137 
   NTFY_ORDER 50-n_Licht_Einfahrt 
   REGEXP     Licht_Einfahrt 
   STATE      2017-02-26 09:02:46 
   TYPE       notify 
Das ist natürlich doch schon etwas komplexer.
All meine einfachen Schaltfunktionen sind so aufgebaut. Ich habe auch alle nach dem selbem Muster benannt.
Ich sehe hier zwei Sachen um zu Optimieren.
Sicher gibt es eine Möglichkeit die Kopplung einfacher aufzubauen.
Des Weiteren wäre es Interessant ob man nicht ein Funktion oder ähnliches schreiben könnte, da ja immer wieder das Selbe ausgeführt wird, nur der eigentliche Name ist anders.
Was denkt Ihr, wo kann man ansetzen und wie macht man das mit diesem System? :-)
Vielen Grüße und schon einmal vielen Dank
Martin
			
			
			
				Hallo martin2day,
Ich bekomme zwar den richtigen Zustand angezeigt, allerdings schaltet meine Lampe nicht. Kannst du mal den Script Code einstellen, damit ich meinen Fehler identifizieren kann?
Danke
			
			
			
				Zitat von: martin2day am 26 Februar 2017, 09:07:23
Was denkt Ihr, wo kann man ansetzen und wie macht man das mit diesem System? :-)
Vorab: Ich habe keine S7.
Ich würde aber aus dem Bauch raus vermuten, dass das ReadingsProxy den dummy und die beiden notify ersetzen kann.