FHEM Forum

FHEM => Automatisierung => Thema gestartet von: martin2day am 26 Februar 2017, 09:07:23

Titel: Optimierung der vorhandenen Devices und Notify's
Beitrag von: martin2day am 26 Februar 2017, 09:07:23
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
Titel: Antw:Optimierung der vorhandenen Devices und Notify's
Beitrag von: pepe8866 am 16 Juni 2017, 11:28:12
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
Titel: Antw:Optimierung der vorhandenen Devices und Notify's
Beitrag von: igami am 16 Juni 2017, 12:47:25
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.