FHEM Plugin

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

    • Hallo@schwatter,

      habe auch einen fhem Server laufen mit diversen MAX, HM, IT, Sonoff Geräten, aber ich bekomme mit dem Plugin einfach keine Verbindung zustande.
      Als Hardware ist eine Solo² im Einsatz mit VTI 13, im log von fhem kommt auch nichts rum. ;(


      Kannst du mir vielleicht einen Tipp geben ?

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

    • Leeloo_Dallas schrieb:

      Nach intensiver Arbeit am FHEM-Tablet-UI (FTUI) kann ich @hmmmdada nur zustimmen. Es ist wesentlich sinnvoller das Ganze in einem Browser darzustellen.

      hmmmdada schrieb:

      Wozu das rad bei fhem neu erfinden? Dafür gibt es die tablet ui in fhem... die liefert ein komplette html webseite und das in schick... die kann man auf der box mit dem browser anzeigen...

      Gesendet von meinem SM-G920F mit Tapatalk
      Gibt es außer dem ChromeiumOS noch einen Browser als PlugIn, der "schneller" aufzurufen/zu starten ist und bei welchem ich den FHEM-User sowie das Passwort für FHEM im Browser hinterlegen kann?
      Verstehe ich das richtig, dass es eine Möglichkeit gibt eine Tablet UI Seite einfach über VTI oder ähnliche zu nutzen? Wie stelle ich das an? Kann ich dann per Cursor über die Oberfläche klicken? Wie rufe ich das auf?
    • fidel71 schrieb:

      Beschäftigt sich noch jemand damit?
      Ich habe vor Jahren mal damit angefangen, aber mittlerweile keinen Verwendungszweck mehr dafür. Der Code ist frei. Wer will kann ihn in ein Git packen und weiterentwickeln. Meinen Segen habt ihr.
      VU+ Solo2 LAN
      VU+ Uno4k LAN
      VU+ Uno4k WLAN 5GHZ
      VU+ Zero LAN
      Inverto Unicable JESS LNB (32) + Inverto Power Inserter.
    • Habe gerade ein paar Sachen ergänzt in der

      Quellcode

      1. ELEMENTS = ["FHT","MAX","FS20","CUL_HM","IT","CUL_TX","CUL_WS","FBDECT","Weather", "MQTT_DEVICE", "DOIF", "FRITZBOX", "CUL", "notify"]


      Leider scheitere ich bei "notify"

      Habe ich das ergänzt, hat sich das Plugin immer aufgehängt ohne das die Box mit crash.log rebootet. Half nur init4 + init3.
      Als ich dann "notify" löschte und von getElementsByRoom auf getElementsByType geswitched hatte, danach wieder "notify" ergänzte,
      war es mir möglich die Notifys einzulesen. Schalte ich nun von Type auf Rooms zurück bekomme ich auch endlich einen Crashlog. Dieser
      schaut so aus:


      Quellcode

      1. eply: 'HTTP/1.1 200 OK\r\n'
      2. header: Content-Length: 1003
      3. header: Content-Type: application/json; charset=utf-8
      4. Traceback (most recent call last):
      5. File "/usr/lib/enigma2/python/mytest.py", line 236, in processDelay
      6. callback(*retval)
      7. File "/usr/lib/enigma2/python/Plugins/Extensions/fhem/fhem.py", line 177, in setConf
      8. self.startRun()
      9. File "/usr/lib/enigma2/python/Plugins/Extensions/fhem/fhem.py", line 209, in startRun
      10. self.reload_Screen()
      11. File "/usr/lib/enigma2/python/Plugins/Extensions/fhem/fhem.py", line 463, in reload_Screen
      12. for listentry in self.container.getRooms():
      13. File "/usr/lib/enigma2/python/Plugins/Extensions/fhem/fhem.py", line 988, in getRooms
      14. rooms = element.getRoom()
      15. File "/usr/lib/enigma2/python/Plugins/Extensions/fhem/fhem.py", line 563, in getRoom
      16. return str(self.Data["Attributes"]["room"]).split(",")
      17. KeyError: 'room'
      18. (PyObject_CallObject(<bound method Session.processDelay of <__main__.Session instance at 0x5c0423c8>>,()) failed)
      19. ]]>
      20. </dvbapp2crashlog>
      21. </crashlogs>
      22. </stbcrashlog>
      Alles anzeigen


      Im Anhang mal das aktuelle Projekt mit Fehler by Notify mit getElementsByRoom. Warum ich jetzt den KeyError 'room' bekomme erschließt sich mir nicht.
      Dateien
      • fhem_16.07.18.rar

        (33,26 kB, 6 mal heruntergeladen, zuletzt: )
    • Mh ok,
      zumindest konnte ich jetzt endlich den Absturz verhindern. Dazu habe ich das

      Quellcode

      1. def getRoom(self):
      2. return str(self.Data["Attributes"]["room"]).split(",")

      in das geändert:


      Quellcode

      1. def getRoom(self):
      2. try:
      3. if self.Data["Attributes"]["room"] is not None:
      4. return str(self.Data["Attributes"]["room"]).split(",")
      5. else:
      6. return "no def"
      7. except:
      8. return "no prop"

      Die Darstellung ist noch nicht 100%
    • So,
      ich denke nu hab ich es. Damit sollten die Fehler bei getRooms hoffentlich der Vergangenheit angehören.

      Quellcode

      1. def getRoom(self):
      2. try:
      3. return str(self.Data["Attributes"]["room"]).split(',')
      4. except:
      5. return ('')
      Folgendes habe ich gefixt:

      - siehe oben. Fehler bei bestimmten Roomattributen. Hoffentlich damit erledigt

      Hinzugefügt:

      - reading für DOIF
      - reading für FRITZBOX
      - reading für CUL
      - reading für NOTIFY
      Dateien
      • fhem_17.07.18.rar

        (18,85 kB, 4 mal heruntergeladen, zuletzt: )
    • Habe mit Lichti einiges gestestet. Er hatte Probleme mit Homematic Schaltaktoren und FS20-Dimmern.
      Habe beides gefixt, bei mir funktioniert es. Lichti hat leider Probleme, die wir noch nicht lösen konnten.
      Das Plugin, sowie auch alte Versionen starten nicht mehr. Vielleicht hat ein Dev hier die Antwort.
      Nettes Feedback ob das Plugin funktioniert oder überhaupt bei euch startet wäre nett.

      Fixed:

      - FS20 Dimmer. Nur mit einem Dummy getestet, sollte aber funktionieren. Wem die Einstellungen nicht reichen, darf diese natürlich ergänzen unter

      Quellcode

      1. FS20_SPECIALS= ["off","on","dim06%","dim25%","dim50%","dim75%","dim100%"]
      - Schalten von HM Schaltaktoren. Bei mir mit HM-LC-SW1-SM getestet.
      Dateien
      • fhem_01.08.18.rar

        (19,3 kB, 8 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von schwatter ()

    • Ich sitze seit ca. 1 Woche daran, das neue MQTT2 von rudolfkoenig einzubinden. Nichts, aber auch nichts führte zum Erfolg...
      Da schalte ich eben den PC aus und öffne nochmal aus Frust das Plugin,......., da, ja da funktioniert es, einfach so. Was ich nicht alles
      probiert habe. Jetzt würde doch jeder sagen: "Super, freu dich doch". Ja ich freu mich, es ist aber schlimm, wenn man nicht weiß warum :evil:

      Hinzugefügt:

      - schalten von MQTT2 (Readings folgen vielleicht nocht. Habe die Gosund SP1, welche auch Spannung messen können)

      Fixed:

      - Postion der Uhr in FullHD. HD hab ich mir noch nicht angeschaut.
      - FS20_LIMITS back to normal. Ich hatte mal was ausprobiert, war aber falsch.


      Fazit:
      Falls es bei euch nicht funktioniert. Folgendes habe ich ausprobiert, um MQTT2 zum laufen zu bringen.

      1. rudolfkoenig informiert, welcher draufhin die jsonlist2+ (/opt/fhem/FHEM/98_JsonList2.pm) angepasst hat. Keine Besserung.
      2. Die Änderung habe ich in jsonlist+ (/opt/fhem/FHEM/98_JsonList.pm) übernommen. Keine Besserung.

      Quellcode

      1. sub
      2. JsonEscape($)
      3. {
      4. my $a = shift;
      5. return "null" if(!defined($a));
      6. $a =~ s/([\x00-\x09\x0b-\x19\x5c])/sprintf '\u%04x', ord($1)/ge; # Forum 57377
      7. $a =~ s/"/\\"/g;
      8. $a =~ s/\n/\\n/g;
      9. my $b = "x$a";
      10. $a = "<BINARY>" if(!utf8::decode($b)); # Forum #55318
      11. return $a;
      12. }
      Alles anzeigen

      3. Folgendes in der /opt/fhem/FHEM/99_myUtils.pm ergänzt

      Quellcode

      1. sub roomsList
      2. {
      3. my $type = shift;
      4. my @rooms;
      5. foreach (devspec2array(".*"))
      6. {
      7. foreach my $room (split /,/,AttrVal($_,"room",""))
      8. {
      9. push @rooms,$room if (!grep /^$room$/,@rooms);
      10. }
      11. }
      12. return join("\n",sort @rooms) if ($type);
      13. return \@rooms;
      14. }
      15. 1;
      Alles anzeigen
      Dateien
    • So,

      jetzt hab ich den Fehler wahrscheinlich gefunden. Ist wohl eher mein eigenes Verschulden gewesen. Und zwar hatte ich mein "stateFormat" für meine
      Gosund SP1 dermaßen verbogen, das dies mir immer MQTT2 aus dem Plugin gehauen hat.

      Quellcode

      1. {
      2. my $state = ReadingsVal($name, "state", "off");
      3. return '<img src="/fhem/images/fhemSVG/rc_GREEN.svg",img width="32" height="32"<div>'.sprintf("&nbsp;&nbsp;Spannung: %.0f V &nbsp;&nbsp;Stromstärke: %.3f A &nbsp;&nbsp;Leistung: %.0f W &nbsp;&nbsp;Wifi_RSSI: %.0f %%", ReadingsVal($name,"ENERGY_Voltage",0), ReadingsVal($name,"ENERGY_Current",0), ReadingsVal($name,"ENERGY_Power",0), ReadingsVal($name,"Wifi_RSSI",0)).'</div>' if($state eq "on");
      4. return '<img src="/fhem/images/fhemSVG/rc_RED.svg",img width="32" height="32"<div>'.sprintf("&nbsp;&nbsp;Spannung: %.0f V &nbsp;&nbsp;Stromstärke: %.3f A &nbsp;&nbsp;Leistung: %.0f W &nbsp;&nbsp;Wifi_RSSI: %.0f %%", ReadingsVal($name,"ENERGY_Voltage",0), ReadingsVal($name,"ENERGY_Current",0), ReadingsVal($name,"ENERGY_Power",0), ReadingsVal($name,"Wifi_RSSI",0)).'</div>' if($state eq "off");
      5. return '<img src="/fhem/images/fhemSVG/rc_YELLOW.svg",img width="32" height="32"<div>'.sprintf("&nbsp;&nbsp;Spannung: %.0f V &nbsp;&nbsp;Stromstärke: %.3f A &nbsp;&nbsp;Leistung: %.0f W &nbsp;&nbsp;Wifi_RSSI: %.0f %%", ReadingsVal($name,"ENERGY_Voltage",0), ReadingsVal($name,"ENERGY_Current",0), ReadingsVal($name,"ENERGY_Power",0), ReadingsVal($name,"Wifi_RSSI",0)).'</div>' if($state eq "reboot");
      6. return '<img src="/fhem/images/fhemSVG/rc_BLUE.svg",img width="32" height="32"<div>'.sprintf("&nbsp;&nbsp;Spannung: %.0f V &nbsp;&nbsp;Stromstärke: %.3f A &nbsp;&nbsp;Leistung: %.0f W &nbsp;&nbsp;Wifi_RSSI: %.0f %%", ReadingsVal($name,"ENERGY_Voltage",0), ReadingsVal($name,"ENERGY_Current",0), ReadingsVal($name,"ENERGY_Power",0), ReadingsVal($name,"Wifi_RSSI",0)).'</div>' if($state eq "offline");
      7. }




      Ich habe es jetzt etwas einfacher gestaltet. Bis jetzt alles ok. Passt mir optisch aber noch nicht :P


      Quellcode

      1. {sprintf("Spannung: %.0f V - Stromstärke: %.3f A - Leistung: %.0f W - Wifi_RSSI: %.0f %%",
      2. ReadingsVal($name,"ENERGY_Voltage",0),
      3. ReadingsVal($name,"ENERGY_Current",0),
      4. ReadingsVal($name,"ENERGY_Power",0),
      5. ReadingsVal($name,"Wifi_RSSI",0))}

      Meistens rede ich ja mit mir selbst hier. Vielleicht ist da wer, der das bestätigen kann :D
    • Ja das funktioniert. Dazu folgendes ändern

      Zeile 1173

      Quellcode

      1. conn = httplib.HTTPConnection(self.Address)


      ändern zu

      Quellcode

      1. conn = httplib.HTTPSConnection(self.Address)


      Und Zeile 1200

      Quellcode

      1. conn = httplib.HTTPConnection(self.Address)

      ändern zu

      Quellcode

      1. conn = httplib.HTTPSConnection(self.Address)


      Schaue bei Gelegenheit, ob ich das im Setup auswählbar machen kann.
    • Danke, hat funktioniert!
      Allerdings waren die Zeilennummern bei mir andere - nämlich:
      1163 und 1190
      Version ist vom 2.9.
      lg

      punker

      The truth is out there!

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

    • Das plugin funktioniert nur ohne csrfToken.

      Beitrag 157 und 158 lesen, csrfToken deaktivieren.

      Wenn es Probleme mit abspeichern des Usernamen und Passwort gibt,

      Quellcode

      1. - per Telnet auf die Vu+
      2. - init 4
      3. - /etc/enigma2/settings bearbeiten, und folgendes hinzufügen,
      4. config.fhem.username=yourUsername
      5. config.fhem.password=yourPassword
      6. - init 3
      Alles anzeigen