FHEM Plugin - Bedarf?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • FHEM Plugin - Bedarf?

      Hallöle,

      Ich lese mich grad in Python bzw Plugin Entwicklung ein wenig ein. Als Testprojekt habe ich mir mal eine FHEM Steuerung vorgenommen. Ich habe diesbezüglich kein bereits existierendes Plugin für diese Nische gefunden. Falls allgemeiner Bedarf besteht, würde ich hier Updates posten. Ansonsten mache ich es nur im Kämmerlein für mich.

      Bis jetzt gibt es nur eine rudimentäre Anzeige der Heizungswerte aller Räume für die FHT komponenten. Temperaturveinstellung ist fast fertig. FS20 Lichtsteuerung wird folgen.

      1_0_19_EF10_421_1_C00000_0_0_0.jpg
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • Ja klar bedarf bestünde. Ich hatte mal vor mit lcd4linux einen statusmonitor zu basteln, allerdings komm ich zu nix bin seit schule usw. Beruflich ziemlich eingespannt. Hab fhem per raspi am laufen mit hmlan und cul
      Gruß Rogni

      Wer Rechtschreibfehler findet darf Sie gerne behalten :P
    • Bloss Kein Stilles Kämmerlein Projekt!!!

      Hallo Waldmensch!

      entschuldige das ich jetzt schreie:

      ENDLICH WAGT SICH JEMAND RAN !!!!!!!!!!!!!!!

      ich bin dabei (kann aber leider nicht programmieren), stelle Dir aber gerne meine relativ umfangreiche FHEM Installation mit vielen vielen unterschiedlichen Geräten zu Testzwecken zur Verfügung (nicht physikalisch ;P ) ...

      Gruss

      Markus
      Dateien
      • Bildschirmfoto.png

        (300,92 kB, 914 mal heruntergeladen, zuletzt: )
    • Also momentan konzentriere ich mich erst mal auf FHT, also Heizung. Für mich ist das der erste Kontakt mit Python und mit Enigma Plugins. Normalerweise entwickle ich auf .NET. Problematisch ist, das ich bisher so gut wie keine Dokumentation zu Enigma2 gefunden habe. Das Tutorial aus dem IHAD kenne ich. Ebenfalls problematisch ist, das die JSON Api in FHEM auch noch eine Baustelle ist, soweit ich das weiß.

      @Schaufma: ich glaube so komplett werden wir das nicht nachbauen können. Dazu ist das Layout der plugins zu starr. Wir sollten uns also auf das wichtigste konzentrieren.

      Hier mal der Aktuelle Status des Projekts. Ich kann damit alle Räume überwachen und auch die Temperatur setzen (mit den Pfeiltasten links und rechts der 0 in 0.5er Schritten)

      1_0_19_70_D_85_C00000_0_0_0.jpg
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • hi waldmensch ...

      ich wollte dich nicht überfordern ;)

      ganz, ganz langsam ... ich bin ja schon froh, das jemand anfängt!

      ich biete dir meine Unterstützung auf jeden fall an, kann ganz gut testen und würde mich freuen, wenn das ein oder andere gerät (am wichtigsten wären mir die hue, max und fritz dect geräte) schaltbar wären und auch die derzeitigen schaltzustände erkannt werden ...

      für mich als couch potatoe ist das halt ein Traum ... auf der couch liegen und steuern ;)

      gruss

      markus
    • Wenn ihr FHT habt und im Haus LAN kein https verwendet, kann ich euch hier mal den istzustand anhängen. Es gibt kein Setup. IP, Port, user und Pass müssen im plugin.py oben hart eingetragen werden


      Einen Pfad erstellen: /usr/lib/enigma2/python/Plugins/Extensions/fhem
      Inhalt des Zip da reinpacken
      die plugin.py mit texteditor öffnen und oben die Zugangsdaten eintragen. Dann GUI neu starten und übers Plugin Menü starten. Solltemperatur Änderungen müssen mit grün abgeschickt werden. Es gibt keine Bestätigung und FHEM typisch dauert es auch eine Weile, bis ihr die Änderung am Thermostat seht. Gelb refreshed die Daten vom FHEM Server


      Wie gesagt, nur FHT momentan und nur Proof of Concept. Nicht mal Alpha ;)
      Dateien
      • plugin.zip

        (3,23 kB, 122 mal heruntergeladen, zuletzt: )
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • Ah, schön!
      Habe den Code mal überflogen. Ein Gedanke dazu:
      Es wäre ein riesiger Vorteil, wenn die einzulesenden fhem-daten nicht hart codiert sind, sondern z.B. dynamisch erzeugst werden. (Evtl. durch einlesen separater Konfigdateien?)
      Dann könnten sich die Interessenten hier ihre Configs selber schreiben, ohne in deinem Python-Code rumzuwurschteln.

      Ist nur so eine spontane Idee, ich kann den Aufwand auch mangels Python-Wissen nicht absätzen.
    • oder idealerweise die fhem.cfg (oder teile davon) verwendet ...

      dann bräuchte man es nicht doppelt machen ...
    • Das Problem ist, das die Readings total unterschiedlich sind. Manche haben sogar Einheiten dahinter. Je nachdem wer das entsprechende Modul gebaut hat. Momentan arbeite ich ja intern großteils mit dem JSON objekt, so wie es eingelesen wurde. Um aber z.B. eine grafische Liste im Plugin zu befüllen, muß ich sie umpacken. Über den Namen kann ich dann wieder im JSON Objekt nachschlagen. Das Problem ist halt, erst mal verschiedene Readings zu haben. Ich habe nur FHT. Wenn jemand von Euch Max oder Homematik hat, bitte mal den JSON Auswurf eines Thermostaten hier posten. Aufruf über

      Quellcode

      1. http://192.168.178.40:8083/fhem?XHR=1&cmd=jsonlist+FHT_2c41

      wobei in der URL hinten der Name eines existierenden Thermostaten angegeben werden muß

      Das sieht dann für FHT so aus:
      Spoiler anzeigen

      Quellcode

      1. {
      2. "ResultSet": {
      3. "Results": {
      4. ".measuredHigh": "null",
      5. ".measuredLow": "229",
      6. "ATTRIBUTES": {
      7. "IODev": "COC",
      8. "alias": "Heizung WZ",
      9. "event-on-change-reading": "actuator,battery,warnings,window",
      10. "event-on-update-reading": "measured-temp,desired-temp",
      11. "lazy": "1",
      12. "retrycount": "3",
      13. "room": "FHT"
      14. },
      15. "CFGFN": "/media/usbdisk/fhem/heizung.cfg",
      16. "CHANGED": "null",
      17. "COC_MSGCNT": "36490",
      18. "COC_RAWMSG": "810c04xx0909a0012c4144006900",
      19. "COC_RSSI": "-56.5",
      20. "COC_TIME": "2015-02-01 19:28:52",
      21. "CODE": "2c41",
      22. "DEF": "2c41",
      23. "IODev": "COC",
      24. "LASTInputDev": "COC",
      25. "MSGCNT": "36490",
      26. "NAME": "FHT_2c41",
      27. "NR": "63",
      28. "READINGS": {
      29. "actuator": {
      30. "TIME": "2015-02-01 19:28:50",
      31. "VAL": "16%"
      32. },
      33. "actuator2": {
      34. "TIME": "2014-10-11 16:10:51",
      35. "VAL": "pair"
      36. },
      37. "battery": {
      38. "TIME": "2015-02-01 19:28:52",
      39. "VAL": "ok"
      40. },
      41. "day": {
      42. "TIME": "2014-10-12 02:10:41",
      43. "VAL": "12"
      44. },
      45. "day-temp": {
      46. "TIME": "2014-10-26 15:52:25",
      47. "VAL": "22.0"
      48. },
      49. "desired-temp": {
      50. "TIME": "2015-02-01 16:45:13",
      51. "VAL": "23.0"
      52. },
      53. "fri-from1": {
      54. "TIME": "2014-10-26 15:52:20",
      55. "VAL": "15:00"
      56. },
      57. "fri-from2": {
      58. "TIME": "2014-10-26 15:52:21",
      59. "VAL": "18:00"
      60. },
      61. "fri-to1": {
      62. "TIME": "2014-10-26 15:52:21",
      63. "VAL": "22:30"
      64. },
      65. "fri-to2": {
      66. "TIME": "2014-10-26 15:52:21",
      67. "VAL": "24:00"
      68. },
      69. "hour": {
      70. "TIME": "2014-10-12 03:20:00",
      71. "VAL": "3"
      72. },
      73. "lowtemp": {
      74. "TIME": "2015-02-01 19:28:52",
      75. "VAL": "ok"
      76. },
      77. "lowtemp-offset": {
      78. "TIME": "2014-10-26 15:52:26",
      79. "VAL": "4.0"
      80. },
      81. "measured-temp": {
      82. "TIME": "2015-02-01 19:28:51",
      83. "VAL": "22.9"
      84. },
      85. "minute": {
      86. "TIME": "2014-10-12 03:20:00",
      87. "VAL": "19"
      88. },
      89. "mode": {
      90. "TIME": "2014-10-26 15:52:28",
      91. "VAL": "auto"
      92. },
      93. "mon-from1": {
      94. "TIME": "2014-10-26 15:52:15",
      95. "VAL": "15:00"
      96. },
      97. "mon-from2": {
      98. "TIME": "2014-10-26 15:52:15",
      99. "VAL": "18:00"
      100. },
      101. "mon-to1": {
      102. "TIME": "2014-10-26 15:52:15",
      103. "VAL": "22:30"
      104. },
      105. "mon-to2": {
      106. "TIME": "2014-10-26 15:52:15",
      107. "VAL": "24:00"
      108. },
      109. "month": {
      110. "TIME": "2014-10-12 02:10:41",
      111. "VAL": "10"
      112. },
      113. "night-temp": {
      114. "TIME": "2014-10-26 15:52:25",
      115. "VAL": "19.0"
      116. },
      117. "report1": {
      118. "TIME": "2014-10-26 15:50:19",
      119. "VAL": "255"
      120. },
      121. "report2": {
      122. "TIME": "2014-10-26 15:50:20",
      123. "VAL": "255"
      124. },
      125. "sat-from1": {
      126. "TIME": "2014-10-26 15:52:22",
      127. "VAL": "10:50"
      128. },
      129. "sat-from2": {
      130. "TIME": "2014-10-26 15:52:22",
      131. "VAL": "24:00"
      132. },
      133. "sat-to1": {
      134. "TIME": "2014-10-26 15:52:22",
      135. "VAL": "23:00"
      136. },
      137. "sat-to2": {
      138. "TIME": "2014-10-26 15:52:23",
      139. "VAL": "24:00"
      140. },
      141. "state": {
      142. "TIME": "2015-02-01 19:28:51",
      143. "VAL": "measured-temp: 22.9"
      144. },
      145. "sun-from1": {
      146. "TIME": "2014-10-26 15:52:23",
      147. "VAL": "11:00"
      148. },
      149. "sun-from2": {
      150. "TIME": "2014-10-26 15:52:24",
      151. "VAL": "24:00"
      152. },
      153. "sun-to1": {
      154. "TIME": "2014-10-26 15:52:24",
      155. "VAL": "23:00"
      156. },
      157. "sun-to2": {
      158. "TIME": "2014-10-26 15:52:24",
      159. "VAL": "24:00"
      160. },
      161. "temperature": {
      162. "TIME": "2015-02-01 19:28:51",
      163. "VAL": "22.9"
      164. },
      165. "thu-from1": {
      166. "TIME": "2014-10-26 15:52:19",
      167. "VAL": "15:00"
      168. },
      169. "thu-from2": {
      170. "TIME": "2014-10-26 15:52:19",
      171. "VAL": "18:00"
      172. },
      173. "thu-to1": {
      174. "TIME": "2014-10-26 15:52:19",
      175. "VAL": "22:30"
      176. },
      177. "thu-to2": {
      178. "TIME": "2014-10-26 15:52:20",
      179. "VAL": "24:00"
      180. },
      181. "tue-from1": {
      182. "TIME": "2014-10-26 15:52:16",
      183. "VAL": "15:00"
      184. },
      185. "tue-from2": {
      186. "TIME": "2014-10-26 15:52:16",
      187. "VAL": "18:00"
      188. },
      189. "tue-to1": {
      190. "TIME": "2014-10-26 15:52:16",
      191. "VAL": "22:30"
      192. },
      193. "tue-to2": {
      194. "TIME": "2014-10-26 15:52:17",
      195. "VAL": "24:00"
      196. },
      197. "warnings": {
      198. "TIME": "2015-02-01 19:28:52",
      199. "VAL": "none"
      200. },
      201. "wed-from1": {
      202. "TIME": "2014-10-26 15:52:17",
      203. "VAL": "15:00"
      204. },
      205. "wed-from2": {
      206. "TIME": "2014-10-26 15:52:18",
      207. "VAL": "18:00"
      208. },
      209. "wed-to1": {
      210. "TIME": "2014-10-26 15:52:18",
      211. "VAL": "22:30"
      212. },
      213. "wed-to2": {
      214. "TIME": "2014-10-26 15:52:18",
      215. "VAL": "24:00"
      216. },
      217. "window": {
      218. "TIME": "2015-02-01 19:28:52",
      219. "VAL": "closed"
      220. },
      221. "windowopen-temp": {
      222. "TIME": "2014-10-26 15:52:25",
      223. "VAL": "8.0"
      224. },
      225. "windowsensor": {
      226. "TIME": "2015-02-01 19:28:52",
      227. "VAL": "ok"
      228. },
      229. "year": {
      230. "TIME": "2014-10-12 02:10:41",
      231. "VAL": "14"
      232. }
      233. },
      234. "STATE": "measured-temp: 22.9",
      235. "TYPE": "FHT"
      236. }
      237. }
      238. }
      Alles anzeigen
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • Ist das genial, werde es Tage probieren. Freue mich über diese Möglichkeit. Vielen Dank für dein/euer Bemühen.


      Sent from my iPhone using Tapatalk

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SpeicherO ()

    • Die verschiednen Readings könnte man finden, indem man den ganzen Objekt-Baum rekursiv durchläuft...oder?

      (Bin leider mit fhem garnicht großartig so vertraut, ich habe damit nur testweise einen eHZ Stromzähler laufen...mit so einem inoffiziellen Modul, das wird dir wahrscheinlich nicht viel weiterhelfen. )
    • Ich habe Homematic ccu2, 10 Rolladenaktoren, 2 normale Licht an/aus, eine Kreutz Licht an/aus und 3 Steckdosen an/aus.
      Wenn ich helfen kann, gerne.
      Mit Heitzkörpersteuerung kann ich leider nicht dienen, da hat sich für mich der Sinn nicht erschlossen.
      Für alles andere bin ich Feuer und Flamme und möchte auch noch erweitern, Türöffner, Tür-Camera und so weiter.
      Gruß Thomas
    • schaufma schrieb:

      hab Dir gerade ein Mail geschickt ...


      Danke dafür! In die große Liste guck ich lieber noch gar nicht rein, die vom MAX ist schlimm genug. Unten mal im Vergleich die geläufigen Werte. Das Problem ist, das man für jedes FHEM Modul quasi einen eigenen Parser braucht. Da wurde auf FHEM Seite tüchtig getrieft und kein einheitlicher Standard eingeführt. Wenigstens die Standardwerte sollten bei allen Heizungselementen gleich sein. Es gibt immer eine Solltemperatur und eine Ist Temperatur. Es gibt auch immer n Thermostate, die einen Wert zwischen 0 und 100 haben können. Selbst diese "kleinsten gemeinsamen Nenner sind unterschiedlich. Ich überlege gerade, ein internes generelles Objekt mit den Standardwerten zu erstellen und für jeden Typ ein translator Configfile anzulegen. So wie eine locale. Alle gelieferten Werte werden wir eh nicht verwursten. Beispielsweise das Wochenzeitprogramm, werde ich nicht ins Plugin bauen.

      Beispiel MAX: "STATE": "off °C",
      Beispiel FHT: "STATE": "measured-temp: 22.9",

      Beispiel MAX:
      "desiredTemperature": {
      "TIME": "2015-02-01 19:41:19",
      "VAL": "off"
      },

      Beispiel FHT:
      "desired-temp": {
      "TIME": "2015-02-01 16:45:13",
      "VAL": "23.0"
      },

      Beispiel MAX:
      "temperature": {
      "TIME": "2015-02-01 12:44:06",
      "VAL": "16.6"
      },

      Beispiel FHT:
      "measured-temp": {
      "TIME": "2015-02-01 19:28:51",
      "VAL": "22.9"
      },
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • ja, das wird wahrscheinlich komplizierter, jedoch (so wie du es vor hast) mit einer "Matching Tabelle" müsste es gehen ...

      auch bei den settings (nicht nur bei den readings) wird das wahrscheinlich notwendig ...

      max hat ja z.B. nicht nur die Temperatur in grad, sondern auch eco, comfort, boost, auto und off ... keine Ahnung, ob die auch bei Fht vorhanden sind ...

      auf jeden fall ist das echt top, das du dir das anschaust!
    • Cool wäre auch, eine Ansteuerung zu Intertechnoaktoren, dann könnte ich die Rollläden mit der Fernbedienung steuern. Ichhabe Zeit und schaue gespannt, wie sich das tolle Plugin entwickelt. Bin zwar nur ein Laie, aber wenn ich helfen kann.....


      Sent from my iPad using Tapatalk
    • @schaufma: Kannst Du mal in das webinterface auf einen MAX Thermostat gehen und dort den Befehl für die Wertänderung rauskopieren?

      Im Chrome, mit der Maus aufs Dropdown + rechte Maustaste "Element untersuchen". Dann auf der Konsole den eingefärbten Bereich mit rechter Maustaste kopieren.


      Unbenannt.JPG
      VU+ Solo2
      VU+ Uno4k
      VU+ Zero
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.