Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker

Begonnen von _Markus_, 14 September 2015, 15:06:43

Vorheriges Thema - Nächstes Thema

Murdock

Moin zusammen,

nachdem die Kommunikation zwischen IFTTT und fhem mit den oben beschriebenen Modulen nicht richtig funktioniert hat, habe ich mir erstmal mit einer Alternative ausgeholfen.
Sender der Befehle per URL über den IFTTT Maker Channel.

Folgender Artkiel hat mir dabei geholfen:
http://www.juergenstechnikwelt.de/smarthome-2/mein-bmw-spricht-per-ifttt-mit-meinem-smarthome/

Das klappt sehr gut und die Befehle kommen auch schnell im fhem an. Jetzt hat der Maker Chanel bei IFTTT Probleme mit eigenen Zertifikaten wie z.B.  den https Zugriff über den myfritz.net Zugriff, welche ich gerne als feste IP (DynDNS) benutzen würde, um die Befehle über https zu versenden. Hat schon jemand von euch eigene Zertifikate, in diesem Fall die Datei "boxcert.cer" von AVM auf fhem bzw. auf dem PI installiert ? Das diese irgendwie in dem Ordner "opt/fhem/certs" müssen, habe ich schon rausgefunden.

Vielleicht hat das jemand von Euch schon mal gemacht und hat einen guten Tip für mich.

Danke
fhem auf Raspberry PI  3 - V3 Cul 868 MHZ - V3 Cul433 MHZ - Jeelink 868MHZ - HMMLan - Gigaset G Tag - Nut LT-BT

hartenthaler

So ich habe jetzt endlich mal bei IFTTT einen Maker-Empfangskanal (IF) eingerichtet (war sehr einfach) und die send_method im Modul auf "maker" umgestellt, so dass fhem entsprechend des Filters die Nachrichten nun an IFTTT schickt. Was ich erst nicht richtig verstanden hatte war, dass man für jede Kombination von device und state jeweils ein IFTTT-Rezept anlegen muss, also etwa zwei Rezepte für fhem_event_HUEDevice8_on und fhem_event_HUEDevice8_off. Wenn ich jetzt die HUEDevice8-Lampe ein- oder ausschalte triggert jeweils das entsprechende IFTTT-Rezept. Allerdings triggerten die Rezepte alle paar Minuten, selbst wenn ich die Lampe nicht geschaltet habe (das hat sich über das Attribut der Lampe "event-on-change-reading state" beheben lassen).

Für die Richtung IFTTT nach fhem nutze ich weiterhin pushbullet und nicht den URL-Aufruf wie er in Jürgens-Technikwelt beschrieben worden ist (siehe obigen Beitrag von Murdock), da ich mich über ein VPN nach Hause verbinde und keine Ports im Router freischalten möchte, selbst wenn darüber dann https läuft (mal ganz unabhängig davon, dass ich mich dann auch noch um die Zertifikate kümmern müsste).

Soweit alles sehr schön. Was mich noch stört:
- ständige Verbindungsabbrüche/Neuverbindungen der websocket-Verbindung (bei mir ohne merkliche Auswirkungen auf die Stabilität des Gesamtsystems)
- notwendige Modifikation des Moduls DevIO (habe dieses Modul vom Update ausgenommen, werde es nun aber mal wieder updaten und die kleine nötige Änderung dann ggf. eben wieder vornehmen)
- Die Befehle über pushbullet lauten etwa "set HUEDevice9 on" und man kann ja einen Filter im Modul setzen, der groben Unfug ausbremst, aber noch sicherer würde ich mich fühlen, wenn man ein Passwort/Phrase ergänzen könnte, also etwa "geheim123: set HUEDevice9 on", aber vielleicht trügt das, denn es geht ja dann trotzdem unverschlüsselt durchs Internet.

Was meint ihr dazu?

Welche Anwendungsszenarien seht ihr? Mir fallen ein:
- BWM mit IFTTT-Anbindung sagt zu Hause (fhem) Bescheid wo er parkt bzw. wann er zu Hause eintreffen wird (leider habe ich gerade keinen BMW zur Hand)
- Protokollierung wichtiger Ereignisse zu Hause (etwa Blumen wollen gegossen werden - WAF!) über IFTTT in einem Google-Docs-Dokument, das man leicht auch von unterwegs checken kann
...
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Alexander Schulz

#32
Hallo zusammen,

ich habe das Modul jetzt schon seit einiger Zeit in Verwendung und bin ganz zufrieden damit. Ein paar kleinere Anpassungen habe ich noch gemacht, aber das sollte nichts mit meinem Problem zu tun haben.

Es scheint so, als gäbe es Verbindungsabbrüche, wenn man das Presence Modul verwendet. Sobald ich das Modul verwende, erhalte ich folgende Meldungen im Logfile

2016.11.06 17:24:28 3: telnetForBlockingFn_1478449468.30287: port 50605 opened
2016.11.06 17:24:28 1: stream.pushbullet.com:443 disconnected, waiting to reappear (websocket)
2016.11.06 17:24:29 1: stream.pushbullet.com:443 reappeared (websocket)
2016.11.06 17:24:29 1: Finished handshare with WebSocket server.


Ich kann trotzdem noch Nachrichten über Pushbullet erhalten, aber die Meldungen kommen ca. alle 30 Sekunden, quasi, wenn das Presence Modul einen Ping durchführt.

define pHandy PRESENCE lan-ping 192.168.XXX.XXX

Ich hab die Meldung hier im Thread gesucht und habe gesehen, dass der Autor des Moduls auch einen ähnlichen Fehler, aber in einem anderen Kontext hat/hatte. Hat sich da mittlerweile schon was getan oder hat jemand einen Tipp für mich?

Besten Dank für das Modul @Murdock

EDIT1: Wenn ich das Presence Modul wieder entferne gibt es auch kein Logeinträge mehr.
EDIT2: Hm okay, ich hab jetzt gesehen, dass das Presence Modul einen BlockingCall macht. Vermute mal, dass es dadurch Zustande kommt. Heißt das jetzt, dass ich als Workarond einfach selbst einen AT Befehl mit eigens geschriebenem Ping schreiben soll?

hartenthaler

#33
Hallo Alexander,

welche Anpassungen am WebSocket-Modul hast Du denn noch gemacht? Ich habe das Modul irgendwann nicht mehr genutzt, da
- man das Standardmodul DevIO modifizieren muss
- mich die ständigen Verbindungsabbrüche und -wiederaufbau gestört haben
- die IFTTT_Maker-Rezepte doch etwas umständlich sind (fhem->IFTTT)
- mir die Steuerung meiner fhem-Komponenten über pushbullet doch etwas zu unsicher erschien (IFTTT->fhem)

Hast Du zu diesen Punkten neue Erkenntnisse?

Deine Analyse, dass die Verbindungsabbrüche mit dem PRESENCE-Modul zusammenhängen, ist interessant, das hatte ich nicht bemerkt. Werde es nun vielleicht noch einmal testen.

Wofür verwendest Du das Modul?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Alexander Schulz

Danke für die rasche Antwort hartenthaler,

ich habe lediglich die benötigten Anpassungen für DevIo gemacht und anstatt dessen die Pushbulletbefehle auszuführen, habe ich sie in eine selbstgeschriebene Funktion übergeben in der der Befehl ausgewertet und entsprechend verarbeitet wird.

Das ganze funktioniert dann wie ein Chatprogramm. Bspw. schicke ich "Wetter" an meinen Pushbullet-FHEM-Account und erhalte dann als Antwort die aktuellen Wetterdaten vom Z-Weather. Ich weiß, dafür gibt es das Whatsapp Modul, aber das war mir zu umständlich (Festnetznummer registrieren usw.).

Es gibt auch noch ein anderes Websocket Modul, aber da muss man noch mehr Daten manipulieren. Also fand ich das Modul hier eigentlich für mich am besten geeignet.

Wenn sich jetzt hier keine Antwort findet, dann werde ich einen neuen Thread auf machen und hoffen, dass jemand noch eine Idee hat.

Murdock

Ich benutze immer noch die Methode aus Post #30. Der Maker Channel von IFTTT kann mittlerweile auch https: übertragen.
Dauert zwar immer so ca. 4 Sekunden bis die Befehle an fhem übertragen werden, aber läuft sonst recht Resourcen schonend und zuverlässig. Ich würde eine andere Lösung natürlich bevorzugen, aber irgendwie hat sich bis jetzt noch niemand der Sache angenommen, der auch wirklich in der Lage ist bzw. auch etwas mehr von Programmcode versteht und sowas evtl. schreiben/umschreiben kann.

Ich verfolge aber weiterhin alles sehr gespannt  8)
fhem auf Raspberry PI  3 - V3 Cul 868 MHZ - V3 Cul433 MHZ - Jeelink 868MHZ - HMMLan - Gigaset G Tag - Nut LT-BT

mistake

FHEM lässt sich übrigens via TelegramBot und dem neuen @IFTTT wunderbar koppeln, wenn man seinen persönlichen Bot und besagten IFTTT-Bot in eine gemeinsame Gruppe hinzufügt.

Da ich telegram sonst nicht übermäßig nutze scheiterte bei mir zunächst die Gruppenerstellung auf dem iPhone, da es mir zumindest dort nicht möglich war, nur die beiden Bots auszuwählen. Habe mich dann über web.telegram.org eingeloggt, und dort ging es problemlos.

febus

Ich scheitere auch gerade daran, die beiden Bots in eine gemeinsame Gruppe zu stecken. Auch im Web. Gibt es da irgendeinen Trick?

Viele Grüße,
Marc

viegener

Zitat von: febus am 10 Dezember 2016, 13:35:31
Ich scheitere auch gerade daran, die beiden Bots in eine gemeinsame Gruppe zu stecken. Auch im Web. Gibt es da irgendeinen Trick?

An welchem Teil scheiterst Du denn, es gibt da eigentlich keinen wirklichen trick.

Ich mache es am einfachsten darüber: Auf den chat mit dem Bot gehen - dort den Bot auszuwählen (sprich das profil anzuzeigen) und dann die Option zu einer Gruppe hinzufügen zu verwenden und die entsprechende Gruppe auswählen.

Das einzige was klar sein muss, die Gruppe muss existieren eine Gruppe nur aus Bots kann nicht funktionieren, denn die Bots sehen ja nur Nachrichten von "echten Accounts"

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

febus

Danke, habe irgendwie auf der Leitung gestanden. Klappt jetzt.
Ist es denn irgendwie möglich über einen Ifttt Channel an Fhem zu senden?
Das wäre dann bot an bot, oder?
Also z. B. Kalender triggert Ifttt über fhem das Licht einzuschalten...

Viele Grüße,
Marc

febus

Ok... Habe nun einiges an Zeit investiert und komme nicht weiter. Die Anbindung von FHEM an den TelegramBot funktioniert und ich kann Befehle über die Telegram App an FHEM schicken und zurück klappt auch. Soweit so gut.

Leider klappt es damit aber immer noch nicht IFTTT sinnvoll an FHEM anzubinden (zumindest gelingt mir das nicht), da bei jedem Channel der IFTTT-Bot an den FHEM-Bot eine Nachricht schickt, die nicht ankommt. Habe es auch nochmal mit dem Maker-Channel versucht, daber das kommt auf das Selbe raus.

Hat dazu noch jemande eine Idee?

[Was ich z. B. realisieren möchte ist ein Channel, der aus Google-Kalendereinträgen FHEM-Befehle absetzt. Das mache ich heute via Mail, was aber nicht zuverlässig funktioniert.]

Viele Grüße,
Marc

viegener

Bots sehen Nachrichten von Bots nicht in Telegram - das geht einfach nicht
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können