FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: _Markus_ am 14 September 2015, 15:06:43

Titel: Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: _Markus_ am 14 September 2015, 15:06:43
Hallo zusammen,

vorerst: Ich bin kein wissender FHEM Modul-Entwickler. Was folgt ist meine laienhafte Ausarbeitung der letzten zwei Tage.

Ich habe bei mir zu Hause die Situation, dass ich hinter einem Unitymedia DS Lite Anschluss sitze, was es mir schwer macht Automation (z.B. IFTTT) über externe Devices (z.B. Handy) zu realisieren. Das Senden von Location-based E-Mails hat mir nicht so recht zugesagt, da gefühlt eher unsicher.

Daher bin ich zu einer Lösung gekommen, die FHEM mit einem beliebigen Websocket verbindet, auf diesem horcht und events an diesen schickt. Events können auf dem Websocket ausgewertet werden. FHEM Befehle, die an den Websocket geschickt werden, werden im FHEM ausgeführt. Sowohl Events, als auch eingehende Commands sind per Regex filterbar. Alles ist in einem Modul gekapselt.

Da mir kein geeigneter Websocket im Internet zu Hand war, der auch gut mit IFTTT kommunizieren kann, habe ich das Modul auf Pushbullet (JSON via Websocket) erweitert. Mein Modul nutzt dazu das schon existierende Pushbullet Modul. Nun kann ich Events (Device:State) and Pushbullet schicken und Commands (set device state) via Pushbullet an FHEM.

Leider kann FHEM nun noch immer nicht direkt mit IFTTT sprechen, da letzteres nicht auf Pushbullet mitlesen kann. Daher habe ich mein Modul weiter erweitert, so dass es nun auch den Maker-Channel (HTTP-POST) von IFTTT bedienen kann.

Mit diesem Setup kann ich nun recht komfortabel gefilterte Events an IFTTT schicken und wieder zurück (über Pushbullet) an FHEM - und habe so alle IFTTT Rezepte verfügbar : )

Das Modul findet ihr angehängt. Natürlich könnte man die einzelnen Funktionalitäten noch in verschiedene Module auslagern - aktuell ist es eher ein proof of concept. Außerdem ist der Name mittlerweile irreführend... Drei Module à la Websocket_Client, IFTTT_Maker und Pushbullet_IO wären sicher gut - wenn jemand sich berufen fühlt, würde es mich freuen!

Das Websocket_Client device legt ihr wie folgt an:

define t Websocket_Client wss://echo.websocket.org

attr t filter_recv_args ^(off|on)$
attr t filter_recv_cmds set
attr t filter_recv_devices ^(Bar|Esszimmer)$

attr t filter_notify_devices Bar
attr t filter_notify_events ^off$|^on$

attr t send_method websocket


Das device t schickt events, die mit den Attributen filter_notify_devices und filter_notify_events gefiltert sind an den Websocket. Alles was vom Websocket kommt und entsprechend durch die regulären Ausdrücke von filter_recv_cmds, filter_recv_devices und filter_recv_args läuft, wird ausgeführt. Mit dieser Konfiguration werden Plain-Text Nachrichten ausgetauscht.

Um den Pushbullet-Websocket zu nutzen ist die Konfiguration folgendermaßen zu ändern/erweitern:

define t Websocket_Client wss://stream.pushbullet.com/websocket/<accessToken>

attr t filter_recv_args ^(off|on)$
attr t filter_recv_cmds set
attr t filter_recv_devices ^(Bar|Esszimmer)$

attr t filter_notify_devices Bar
attr t filter_notify_events ^off$|^on$

attr t pushbullet_accessToken <accessToken>
attr t pushbullet_device "" # default: empty string = all devices
attr t pushbullet_title FHEM Event # default
set t pushbullet on

attr t send_method pushbullet


Nachrichten werden jetzt im JSON Format an Pushbullet geschickt. Tatsächlich geschieht die Kommunikation über HTTP Calls im Pushbullet.pm Modul. Allerdings wird auf dem Pushbullet-Websocket auf eingehende tickles (Nachrichtenhinweise) gehorcht. Diese triggern dann den HTTP GET Call um den Nachrichten-Stream (Pushes) von Pushbullet abzurufen.

Um nun Maker ins Spiel zu holen ist die Konfiguration folgendermaßen zu ändern/erweitern:

define t Websocket_Client wss://stream.pushbullet.com/websocket/<accessToken>

attr t filter_recv_args ^(off|on)$
attr t filter_recv_cmds set
attr t filter_recv_devices ^(Bar|Esszimmer)$

attr t filter_notify_devices Bar
attr t filter_notify_events ^off$|^on$

attr t pushbullet_accessToken <accessToken>
set t pushbullet on

attr t maker_key <maker_key>
attr t maker_event fhem_event # Präfix des Event namen: "fhem_event_device_state". Das Event hat den Body: {value1: "Device:State", value2: "Device", value3: "State" }
set t maker on

attr t send_method maker


Nachrichten werden nun an IFTTT-Maker geschickt. Trotzdem horcht das Modul noch auf Pushbullet und holt die Nachrichten ab, die dort eingehen. Ein IFTTT Rezept sieht also bspw. wie folgt aus: Maker<fhem_event_Bar_on> -> Pushbullet<set Bar2 on>

Damit das ganze funktioniert, musste ich das DevIO Modul leicht anpassen (vielleicht aus Unwissenheit). Es konnte m.E. noch nicht mit verschlüsselten TCP Ports sprechen. Daher habe ich in Zeile 239 wie folgt geändert:

my $conn;
my $port = $2;
    if($port eq "443") {
require IO::Socket::SSL;
$conn = IO::Socket::SSL->new(PeerAddr => $dev, Timeout => $timeout);
} else {
$conn = IO::Socket::INET->new(PeerAddr => $dev, Timeout => $timeout);
}


Ich würde mich über Verbesserungsvorschläge freuen! Sehr viel Zeit zum Anpassen, Ändern, Supporten habe ich leider nicht, daher schreibt Änderungsvorschläge am besten direkt in Perl ; )

Viele Grüße
Markus!

P.S.: Vermutlich gehört der Thread in das Developers Forum. Darauf habe ich aber keine Schreibrechte.
P.P.S.: Wenn gewünscht, würde ich das Modul maintainen, beschreiben, Wiki-Seite erstellen, etc.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: _Markus_ am 25 September 2015, 22:20:33
Habe noch eine neue Version mit asynchronen Aufrufen und keineren Bug-Fixes angehängt.

VG
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Kai-Alfonso am 02 Dezember 2015, 18:45:50
ich hätte ein starkes Interesse, wenn Du das Modul maintainen und ein Wiki erstellen könntest
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: rretsiem am 04 Dezember 2015, 09:51:12
Ich schließe mich dem Wunsch von Kai-Alfonso mal an, das hört sich alles schon sehr gut an.
Gibt es dazu Updates, wird das irgendwo gepflegt?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: febus am 05 Dezember 2015, 14:13:49
Ich würde mir auch wünschen, dass das Modul maintained wird! Danke für die Arbeit! Marc
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: _Markus_ am 22 Dezember 2015, 22:52:16
Kommt nach Weihnachten : )
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: juergen012 am 03 Januar 2016, 17:24:20
Hallo, starkes Modul..hoffe auf Fortsetzung!!
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: FitzZZ am 04 März 2016, 17:29:54
Und - lüppt? :-) Ich teste mal. Dev noch aktiv?

VG
Chris
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: _Markus_ am 04 März 2016, 18:42:01
Hi, jep noch aktiv : )

Wäre prima, wenn du es mal testest. Bei mir läuft das Modul seit einige Zeit durch.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Kai-Alfonso am 05 März 2016, 11:01:38
könntest Du vielleicht ein Wiki Artikel und/oder ein genaueres HowTo beisteuern? Werd aus dem da oben nicht ganz so schlau
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 02 April 2016, 17:09:40
Spannend! Ich habe mich mal auf meinem RaspberryPi ans Nachvollziehen gemacht. Als erstes musste ich drei Pakete nachinstallieren:

Ich bekomme nun die folgenden Meldungen im Logfile, also wird zumindest der Pushbullet-Herzschlag empfangen (das sollte aber besser nicht zu Logfile-Einträgen führen):

2016.04.02 16:28:51 3: Incoming Message: {"type": "nop"}
2016.04.02 16:28:51 2: Incoming message ("{"type": "nop"}") must have at least three segments: <cmd> <device> <arg>

Es gibt ziemlich häufige Meldungen "disconnect"/"reappared". Warum weiß ich nicht.

Aber es erscheint keine Meldung im Logfile und auch keine Aktion, wenn ich von einem anderen Gerät aus eine pushbullet-Nachricht etwa mit "set HUEDevice8 on" an alle absetze. Was ich einmal gefunden habe, war die Meldung:
Incoming Message: {"type": "tickle", "subtype": "push"}

Allerdings erscheint in der pushbullet-Verwaltung auch kein Device, das mein raspberrypi/fhem sein könnte. Muss ich irgendwie so ein Device erzeugen?
Die maker/IFTTT/pushbullet-Kopplung habe ich noch nicht in Angriff genommen.

In fhem bekomme ich als list-Ausgabe (3 mal den key durch xxx ersetzt):

Internals:
   DEF        wss://stream.pushbullet.com/websocket/xxx
   DeviceName stream.pushbullet.com:443
   FD         15
   Interval   300
   NAME       PushBulletSocket1
   NR         128
   NTFY_ORDER 50-PushBulletSocket1
   PARTIAL
   STATE      opened
   TYPE       Websocket_Client
   url        wss://stream.pushbullet.com/websocket/xxx
   Readings:
     2016-04-02 16:53:16   state           opened
   Events:
     HUEDevice10:off 1459550911.80397
     HUEDevice1:off 1459604013.674
     HUEDevice1:on 1459604010.14543
     HUEDevice2:off 1459550569.66576
     HUEDevice4:off 1459550569.84328
     HUEDevice5:off 1459550569.7829
     HUEDevice8:off 1459608806.57366
     HUEDevice8:on 1459608804.26347
Attributes:
   filter_notify_devices HUEDevice
   filter_notify_events ^off$|^on$
   filter_recv_args ^(off|on)$
   filter_recv_cmds set
   filter_recv_devices ^(HUEDevice8)$
   pushbullet_accessToken xxx
   pushbullet_title FHEM
   room       Server
   send_method pushbullet

Es scheinen Events beim Schalten von Lampen registriert worden zu sein, aber es ist keine pushbullet-Nachricht raus gegangen. Woran kann es noch hapern?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 02 April 2016, 17:31:31
Aha. Habe doch noch etwas gefunden: In der Anleitung steht:
set t pushbullet on
Aber das muss wohl so heißen:
attr t pushbullet 1
Nun gehen die Nachrichten per pushbullet sofort raus, wenn ich an einer HUEDevice rumschalte. Und schalten kann ich über pushbullet nun auch. Kleine Ursache - große Wirkung. Geniales Modul! Danke.

Nun geht es an den letzten Schritt, die Kopplung mit IFTTT.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 11 April 2016, 20:32:01
Hallo zusammen,

Gibt es mittlerweile schon ein Wiki mit einer verständlichen Anleitung ? Ich habe mir hier alles gut durchgelesen und auch so einiges getestet. Die Module hochgeladen und auch die fhem.cfg entsprechend installiert. Auch den access token habe ich von Pushbullet bekommen...trotz allem bekomme ich am ende nur eine Fehlermeldung:

"Cannot load module Websocket_Client Please define t first"

Ich komme leider mit meinem "Halbwissen" hier, wie wohl einige andere, nicht entsprechend weiter. Vielleicht hat ja hjemand eine Anleitung für "Halbwissende" ;-)

Ich habe einen Amazon Echo, welchen ich zu Sprachsteuerung für fhem benutze. Das Teil ist wirklich super. Um aber mit fhem zu kommunizieren sind zur Zeit folgende Schritte nötig:

Amazon Echo (Spracheingabe) > IFTTT (Pushbullet Chanel) > Pushbullet (Android Tablet) > Tasker > andFhem Plugin (Tasker) > fhem

Das kommt oft nur sehr zeitverzögert an, kann sogar mal bis zu 10 Sekunden dauern. Also keine zufriedenstellende Lösung.
Deswegen möchte ich abkürzen und ab IFTTT direkt zu fhem übergeben. Das scheint dieses coole Modul wohl hinzubekommen.
Ich bin wirklich nicht auf den Kopf gefallen, aber eine etwas einfachere Anleitung wäre echt Nice, weil ich voll Bock habe das Modul auch benutzen zu können. Vielleicht kann ja jemand etwas helfen.

8)

Danke im vorraus

VG
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 12 April 2016, 21:16:52
Hallo Murdock,
wenn Du eine Fehlermeldung bei define t Websocket_Client wss://stream.pushbullet.com/websocket/<accessToken>
erhältst, dann fehlt eventuell noch eine Voraussetzung. Ich nutze als Plattform einen Raspberrypi und da musste ich zuvor noch drei Module installieren, die in meinem Beitrag oben stehen. Und natürlich das neue  websocket-client-Modul von Markus. Und ich musste auch DevIo so anpassen wie Markus es beschrieben hat. Das ist unschön, weil man dann dieses Standard-Modul aus den automatischen Updates herausnehmen muss, aber das ist halt Stand der Entwicklung.

Siehst Du im fhem Logfile noch weitere Meldungen?

Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 13 April 2016, 12:40:13
Hallo hartenthaler,

danke für deine Antwort.

Ich nutze fhem auch auf dem PI 3. Ich muß also 3 Module bei nachinstallieren, oder sind es Pakete auf dem Pi, so wie du es am 02.04. schreibst ?

Ich nehme an Module, weil ich gerade nach weiteren Tests folgende Fehlermeldung bekommen habe:

Can't locate HTTP/Async.pm in @INC (you may need to install the HTTP::Async module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/00_Websocket_Client.pm line 12.
BEGIN failed--compilation aborted at ./FHEM/00_Websocket_Client.pm line 12.


Wo bekomme ich denn die 3 Module her bzw. wo kann ich Sie in der richtigen Version herunterladen ?

Du schreibst ich muß ich muß das DevIo anpassen. Ich habe im DevIo.pm die Zeile:
my $conn = IO::Socket::INET->new(PeerAddr => $dev, Timeout => $timeout);
Durch Markus Zeilen ersetzt:

my $conn;
   my $port = $2;
    if($port eq "443") {
      require IO::Socket::SSL;
      $conn = IO::Socket::SSL->new(PeerAddr => $dev, Timeout => $timeout);
   } else {
      $conn = IO::Socket::INET->new(PeerAddr => $dev, Timeout => $timeout);
   }


Wie kann ich diese aus den automatischen Updates herausnehmen, da diese zwischenzeitlich durch ein Update schon wieder in die alte Version zurück versetzt wurde ?

Ich glaube das sind erstmal genug Fragen  :) Ich warte jetzt erstmal gespannt auf eine Antwort und versuche dann wieder ein Stück weiter zukommen.

Danke
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 18 April 2016, 16:09:27
Die drei bei mir fehlenden Module/Pakete habe ich folgendermaßen installiert:

sudo perl -MCPAN -e'shell'
und dann in der cpan-shell etwa
install HTTP::Async

Um ein fhem-Modul vom Update auszunehmen kann man ganz oben in der fhem.cfg ein global-Attribut setzen:
attr global exclude_from_update DevIo.pm
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 19 April 2016, 05:20:43
Danke hartenthaler,  8)

das hat alles bestens funktioniert . Nun habe ich mich daran gemacht die Kommunikation mit Pushbullet herzustellen. Das Ansprechhen von IFTTT über den Maker Channel kommt dann danach. Einen Maker Key hab ich mir dafür bei IFTTT auch schon besorgt.

Ich habe es nun gesschafft mit den Vorgaben von Markus und den Verbesserungen von hartenthaler in fhem alles aufzusetzen und bekomme auch bei einem Schalter Event eine Nachricht von Pushbullet. Um das für andere hier auch etwas verständlicher zu machen, schildere ich noch kurz mein Vorgehen.

Ich besitze im Flur einen IT Schalter der mein Flurlicht an und aus schaltet. Dieser heißt schalter1 und ich kann diesen ja gewöhnlich mit set schalter1 on oder set schalter1 off schalten.

Ich habe es mit folgenden Code nach Vorlagen vom Markus und hartenthaler hinbekommen, Nachrichten beim Schalten von schalter1 auf Pushbullet zu bekommen (Im Code wurde 2 mal der Pushbullet Access Token durch xyz ersetzt):



define t Websocket_Client wss://stream.pushbullet.com/websocket/xyz
attr t filter_notify_devices schalter
attr t filter_notify_events ^off$|^on$
attr t filter_recv_args ^(off|on)$
attr t filter_recv_cmds set
attr t filter_recv_devices ^(schalter1)$
attr t pushbullet 1
attr t pushbullet_accessToken xyz
attr t pushbullet_device "schalter1"
attr t pushbullet_title FHEM
attr t room Pushbullet
attr t send_method pushbullet


@hartenthaler:
Jetzt meine Frage an dich. Wie bekommst du es hin, durch das Senden von Nachrichten aus Pushbullet ein fhem event auszulösen ? In meinem Fall wäre es ja das Schalten von schalter1. Er hat ja trotz der Zuweisung im Code durch attr t pushbullet_device "schalter1" kein Device namens "schalter1" in Pushbullet angelegt. Ich bekomme im Logfile von fhem folgende Infos:

2016.04.19 04:45:00 2: IT set schalter1 on
2016.04.19 04:45:01 2: Sending message: "schalter1:on" via PushBullet.
2016.04.19 04:45:02 2: Incoming message ("schalter1:on") must have at least three segments: <cmd> <device> <arg>
2016.04.19 04:45:03 2: Incoming message ("") must have at least three segments: <cmd> <device> <arg>


Das sagt mir das ich in Pushbullet eine Nachricht mit 3 Segmenten verschicken muß. Kannst du mir bitte den Syntax verraten, welchen du benutzt und an welches Device du diese dann in Pushbullet schickst ? Muß ich dafür evtl. irgendwie extra ein "Fhem" Device in Puhbullet erstellen bzw. anlegen ?

Vielen Dank !!!

Update 20.04.2016:

Ich habe es rausgefunden. In meinen Fall einfach eine Pushbullet Nachricht mit dem Inhalt "set schalter1 on" versenden und schon wird geschaltet per fhem.

Leider mußte ich die Einträge bzw das Modul wieder deaktivieren, da im Logfile mehrfach Verbindungsabrüche angezeigt wurden und sich fhem immer wieder nach einiger Zeit selbst aufgehangen/gestoppt hat. Lief also leider für mich nicht stabil. Folgende Meldungen habe ich bekommen:

2016.04.19 21:22:48 1: stream.pushbullet.com:443 disconnected, waiting to reappear (t)
2016.04.19 21:22:49 1: stream.pushbullet.com:443 reappeared (t)
2016.04.19 21:22:49 2: Finished handshake with WebSocket server.
2016.04.19 21:23:01 1: stream.pushbullet.com:443 disconnected, waiting to reappear (t)
2016.04.19 21:23:02 1: stream.pushbullet.com:443 reappeared (t)
2016.04.19 21:23:02 2: Finished handshake with WebSocket server.
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "192jhd63h46fdh346dfh43...") at ./FHEM/00_Websocket_Client.pm line 25


So kann ich es im Moment leider auch nicht laufen lassen. Schade, ich hatte es schon hinbekommen auf dem Amazo Echo Sprachbefehle an IFTTT zu triggern, welcher dann eine Pushbullet Nachricht an fhem geschickt hat, um dann direkt eine Schaltung vorzunehmen. Leider stützte es immer wieder ab und ich mußte den Pi öfters Neustarten oder fhem über die Konsole erneut starten. Vielleicht hat ja jemand eine Idee wie es "stabiler" läuft, oder auch andere Erfahrungen gemacht. Ich warte mal gespannt ab...

Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 22 April 2016, 20:02:52
Die ständigen "Disconneteced/reappeared" Meldungen habe ich auch. Sollte sicher so nicht sein, tut aber bei mir der Stabilität keinen Abbruch. Mein fhem läuft seit etwa 10 Tagen trotzdem absolut stabil. Kann es für die Instabilität noch einen anderen Grund geben? Was ist denn die jeweils letzte Nachricht in Deinem fhem-Logfile bei einem Absturz gewesen?
Viele Grüße
Hermann
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 25 April 2016, 00:41:26
Hallo Hermann,

du hattest recht. Ich habe nochmal ein bischen in den Logfiles nachgeschaut und bekam folgendes als letzte Fehlermeldung vor dem Absturtz:

2016.04.25 00:10:36 1: Including fhem.cfg
Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 15, <$fh> line 4.
2016.04.25 00:10:36 1: reload: Error:Modul 99_myUtils deactivated:
Can't locate Net/SNMP.pm in @INC (you may need to install the Net::SNMP module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 22, <$fh> line 4.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 22, <$fh> line 4.


Darauf hin habe ich dann noch wie von dir beschreiben mit:

sudo perl -MCPAN -e'shell'

Das Modul Net::SNMP über Putty nachinstalliert mit:

install Net::SNMP module

Danach lief es. Bis jetzt schon seit einigen Stunden durchgehend. Ich bekomme zwischendurch noch einmal im Logfile folgende Fehlermeldung:

2016.04.25 00:17:21 1: PERL WARNING: Use of uninitialized value $ret in concatenation (.) or string at ./FHEM/00_Websocket_Client.pm line 144.

...Aber er hängt sich nun erstmal nicht mehr auf. Ich werde das nun ein paar Tage laufen lassen und hoffen das es so stabil bleibt. Aber im moment kann ich so über den Amazon Echo super zeitnahe Sprachebefehle an fhem übergeben.

Danke

Update 25.04.2016 18:39

Schade, zu früh gefreut. Heute Morgen hat der Pi den fhem Dienst wieder von alleine abgeschaltet, so das ich ihn mit sudo /etc/init.d/fhem start wieder starten mußte.
Bevor er abgeschmiert ist kam folgende Fehlermeldung im Logfile:

016.04.25 06:26:56 2: Finished handshake with WebSocket server.
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "UaAzxUsaeUTham...") at ./FHEM/00_Websocket_Client.pm line 258.


Das ganze hat auch jede Menge Action verursacht auf dem Pi. Als ich die Schalter, Aktoren, LED Stripes, TV etc. zur Sprachsteuerung über Pushbullet in der fhem.cfg eingepflegt hatte, kamen so viele  "disconneteced/reappeared" Meldungen, das ich teilweise diese Fehlermeldungen bekommen habe:

2016.04.25 04:30:16 2: You have been ratelimited for performing too many requests/ops in a short period of time, check the X-Ratelimit-* headers included on this response for more information.
2016.04.25 04:30:16 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/00_Websocket_Client.pm line 466.
2016.04.25 04:30:16 1: PERL WARNING: Use of uninitialized value $msg in concatenation (.) or string at ./FHEM/00_Websocket_Client.pm line 266.
2016.04.25 04:30:16 1: PERL WARNING: Use of uninitialized value $msg in split at ./FHEM/00_Websocket_Client.pm line 285.
2016.04.25 04:30:16 1: PERL WARNING: Use of uninitialized value $msg in concatenation (.) or string at ./FHEM/00_Websocket_Client.pm line 287


Schade, stabil sieht leider anders aus denke ich. Ich hoffe jemand nimmt sich noch einmal der Sache an, den der Schaltintervall vom Amazon Echo, über IFTTT zu fhem war echt akzeptabel. Vielleicht hat ja jemand noch eine Idee.  8)

Grüße
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 27 April 2016, 01:18:02
... nur ein diletantischer Klärungsversuch: bei vielen WebServices gibt es eine Beschränkung in der Nutzungsrate (so und so viele Aufrufe pro Zeiteinheit). Wer mehr will muss dann meistens dafür bezahlen. Sobald so eine Überschreitung auftritt schickt der Service dann keine JSON-Nachricht mehr sondern eine Fehlermeldung und an der könnte sich das websocket-Modul dann verschluckt haben. Die Frage ist aber warum laufen da so viele Nachrichten? Schickt dein Echo bei jedem Pups (wörtlich gemeint ;-) eine IFTTT Meldung an fhem? Oder nur wenn es sich um ein richtiges Kommando handelt? Wie funktioniert das eigentlich mit Echo und IFTTT? Wie hast Du das hinbekommen? Geht das in Deutsch oder nur in Englisch?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 02 Mai 2016, 20:10:16
Nabend...

Ich nehme mal als Darstellungsbeispiel meinen "schalter1" der mir mein Flurlicht an- und ausschaltet.

Ich habe mir den Amazaon Echo besorgt, welcher leider nur englische Wörter versteht und wie es aussieht, wird es diesen auch nicht in naher Zukunft, so wie den Fire TV, in deutscher Sprache geben. Die Spracherkennung, bzw. meine neue Untermieterin hat den Namen Alexa, Sie ist wirklich genial und auch was Sie so alles kann ist schon top. Sofern man der englischen Sprache mächtig ist und lust darauf hat.

Ich habe also angefangen Alexa beizubringen Befehle an fhem zu senden, um für mich diverse arbeiten auszuführen. Dazu hat geholfen das IFTTT.com einen Amazon Echo Channel und einen Pushover Channel hat. Nach dem ich mich mit beiden Channeln verbunden habe, konnte ich für Alexa eine Phrase eingeben z.B. "light on". Bei eingang dieser Phrase über Alexa mit den Worten "Alexa, trigger light on" wird es in IFTTT so eingestellt, das Pushover eine Nachricht rausschickt Namens "Flurlicht angeschaltet". Ich habe dann auf meinen Samsung Tablet Pushover installiert und anschliessend Tasker und andFhem. Nach ausprechen der Wörter "Alexa, trigger light on" verbindet sich  der Echo über IFTTT, schickt eine Pushover Nachricht an Pushover, Tasker erkennt über ein Plugin das eine bestimmte Nachricht eingegangen ist und sendet dann über das andFhem Plugin den Schaltbefehl "set schalter1 on" und siehe da, mein Flurlicht geht an. Leider geht dieser Weg ja einmal um die ganze Welt und bis der Befehl dann auf fhem angekommen ist, sind mehrere Sekunden vergangen. Teilweise sogar mal 10 Sekunden, obwohl ich mein Tablet per App auf "Immer Wach" gestellt ist und es immer am Netzteil gelassen habe, verzögert sich alles ab und zu und ist keine wirklich hübsche Lösung. Wenn ich in den Flur gehe und Licht will soll es jetzt hell werden und nicht erst in 6 Sekunden.

Da sah ich nun die Hoffnung in diesem Modul von Markus. Anstatt wie vorher über Pushover konnte ich nun ab IFTTT mit dem Pushbullet Channel direkt Befehle an fhem senden. Wenn es  läuft,  ist es wirklich cool, schon nach einer Sekunde wurde mein Licht angeschaltet, wenn ich es ausgesprochen habe. Leider lässt das Modul und sein Dienst immer wieder meinen fhem Server auf meinen PI 3 abstürtzen oder anhalten. Ich kann machen was ich will, spätestens nach 5 Stunden hält der Server an, immer und immer wieder. Seit dem ich die Codezeilen im fhem.cfg wieder mit # auskommentiert habe, läuft er wieder Tagelang durch.

Was ich also brauche ist ein Channel auf ifttt.com der direkt an fhem Befehle schickt oder Nachrichten ankommen lässt und diese dann, wie Markus Modul als Befehl umsetzt.
Meine Hoffnung liegt darin, das jemand der etwas ähnliches wie ich benötige evtl. nochmal Markus Modul überarbeitet. Denn alleine die ganzen "disconneteced/reappeared"  Meldungen sind nicht so gewollt, denke ich und lassen das Modul leider von Anfang an bei mir unstabil laufen.

Falls jemand da noch einmal rüber schauen mag oder einen anderen Weg hat, wie er IFTT mit fhem kommunizieren lässt, wäre ich sehr dankbar.

Beste Grüße

8)
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Tyllux am 07 Mai 2016, 12:54:04
Hallo zusammen,

ich beschäftige mich gerade ebenfalls mit diesem Problem. Ich gebe einfach einmal meinen (noch nicht funktionalen) Lösungsansatz zum besten:

Anmeldung bei Telegram und Einrichtung eines Bots gem.: http://www.fhemwiki.de/wiki/TelegramBot

Funktioniert soweit ganz geschmeidig: Kommandos lassen sich auslösen (z.B. eine der HUE Lampen anschalten) und die Latenz ist gering. Beim genaueren Lesen fiel mir auf, dass das Modul 50_TelegramBot.pm es gestattet das der Bot in Gruppen (Achtung: nicht in Kanälen) liest UND schreibt.

Also in IFTTT schnell eine beliebigen Trigger (IF) angelegt und mit dem Maker-Channel ein Kommando für einen Post im Gruppen angelegt (THEN). Wer das nachlesen mag: http://developers-club.com/posts/269819/ oder als Video: https://www.youtube.com/watch?v=4EHANdikJR0 (ist zwar arabisch, aber das Visuelle ist eher wichtig)

Dieser Artikel und das Video beziehen sich auf das Schreiben an Benutzer. Das geht aber auch mit Gruppen. Der Bot muss über einen Client in die Admins der Gruppe aufgenommen werden. Ihr benötigt dann nur die passende chat_id des Gruppenchats (das ist übrigens eine negative Zahl). Bei mir waren die CONTACTS in FHEM noch nicht aktualisiert, aber ich konnte diese mit folgendem Kommando ermitteln: https://api.telegram.org/bot<Euer-BOT-Token>/getUpdates

Einfach ein paar Mal in die Gruppe schreiben und das Kommando im Browser absetzen. Im Ergebnis findet ihr u.a. die erforderliche chat_id.

Jetzt folgt aber das eigentliche Problem: mein Gedanke war, dass der Bot per IFTTT in den Gruppenchat ein Kommando absetzt, welches er selbst dann auch per FHEM wieder liest.. ;D

Leider zu früh gefreut, denn in FHEM liest der BOT nicht die eigenen Nachrichten. :-[

Auch die Idee einen zweiten Bot zu nehmen um mit diesem ein Kommando abzusetzen ist nicht realisierbar: aufgrund der API Restriktionen dürfen Bots nicht die Nachrichten anderer Bots lesen.

Tja, an dieser Stelle hänge ich derzeit fest. Mir ist noch unklar, ob der Bot die eigenen Nachrichten nicht lesen darf. Sofern er das darf, müsste ggf. nur das Modul 50_TelegramBot.pm entsprechend angepasst werden, so dass die Nachrichten auch in FHEM auftauchen.

Über eure Ideen, Kritik und Vorschläge freue ich mich!

Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 09 Mai 2016, 12:45:39
Hallo Tylux,
das verstehe ich noch nicht: warum möchtest Du von deinem fhem aus eine Nachricht via Telegram und IFTTT zurück an Dein fhem schicken? Eigentlich ist es doch nur spannend von irgendeinem anderen Trigger (IF) aus etwas in fhem zu veranlassen.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Tyllux am 09 Mai 2016, 15:14:00
Hallo,

vielleicht habe mich unklar ausgedrückt.

Zum Beginn des Prozesses ist FHEM noch nicht relevant:

IFTTT stellt das definierte Ereignis fest
IFTTT sendet daraufhin über die API des Telegram Bot eine Nachricht in den Gruppenchat.

Soweit funktional. Jetzt erst kommt FHEM ins Spiel:

In FHEM liest der Telegram Bot die Nachricht im Gruppenchat, erkennt den Befehl und führt diesen aus.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 10 Mai 2016, 18:15:07
Hallo Tyllux,

vielen Dank für das Teilen deines Projektes. Ich habe mir bei Telegram so wie beschrieben einen Bot angelegt und diesen dann in fhem mit dem TelegramBot Modul eingebunden. Ich kann dann durch schreiben im Bot Chat, in meinem Fall mit "doit set schalter1 on" sehr schnell und unverzögert mein Licht schalten.

Richtig cool ! Ich habe es auch schon hinbekommen über den Maker Channel in IFTTT direkt meinen fhem Befehl in den Bot-Chat und nicht in eine Gruppe oder einen Kanal zu bekommen. Dazu habe ich einfach als Chat_Id meine User Chat ID in die URL eingegeben. Die Chat Ids bekommt man übrigens ganz leicht aus den fhem Readings. Einfach auf der fhem Weboberfläche auf das Modul klicken, welches den Telegram Botnamen hat. Dort werden unter Readings alle Infos angezeigt. Unter "Contacts" stehen dann die Namen und Chat IDs, von den letzten 3 Chats, welche man in Telegramm geführt hat. Sei es nun mit einem User, einer Gruppe oder einen Kanal. Einfacher geht es nicht.

Leider schickt die unten angezeigte URL zwar eine Nachricht in den Bot Chat, aber wie du schon festgestellt hast, liest der Bot seine eigenen Nachrichten nicht aus und gibt diese dann nicht an fhem weiter. Er macht es nur wenn ich als User selber etwas in den Chat schreibe. Ich hoffe das es anstatt einen BOT-Token evtl auch einen User-Token gibt bzw eine ID welche in der URL dann durch den Bot-Token ersetzt wird und dann hoffungsvoll in den Bot Chat als User, also als man selber schreibt, dann müßte es ja funktionieren. Ich habe den Telegram Support schon mal angeschrieben, um zu erfahren ob es möglich ist über eine URL eine Persönliche Chat Nachricht unter meinem Namen zu versenden. Mal sehen was da für eine Antwort kommt. Bis jetzt warte ich schon einen Tag gespannt auf eine Rückmeldung.

Hier die URL, welche ich benutzt habe um von IFTTT über den Maker Channel eine Nachricht direkt in den Bot-Chat zu bekommen:

https://api.telegram.org/bot<token>/sendMessage?chat_id=<Meine User Chat ID>&text=doit%20set%20schalter1%20on

Das Triggern über den Amazon Echo an IFTTT hat auch bestens geklappt. Wenn ich jetzt zu Alexa sage: "Alexa, Trigger message", sendet er superschnell über den Maker Channel mit der URL genau den fhem Befehl, welchen ich haben möchte. Leider eben noch als Bot und nicht als User.
Aber es funktioniert richtig gut, schnell und perfomance sparrend für den PI. Beste Lösung bisher.

Es muß also entweder nur ein "User Token" her, welcher in meinen Namen Nachrichten über eine URL in den Bot-Chat sendet, oder eben jemand schafft es das fhem Telegram-Bot Modul so zu editieren, das es auch seine eigenen Bot Nachrichten auslesen kann.

Vielleicht kannst du ja auch mal beim Telegram Support nachfragen Tyllux. Ich denke zusammen kommen wir schneller zum Ziel. Das mit der URL wäre auf jeden Fall die schnellste und einfachste Lösung.

Zu deiner Frage ob der Bot selber seine eigenen Nachrichten lesen darf, habe ich auch etwas entdeckt. Als ich in der angegebenen URL oben als Chat_ID, die ID vom Bot geschrieben habe, kam folgende Antwort:

{"ok":false,"error_code":403,"description":"Bot can't send messages to the bot"}

Damit wissen wir evtl. schon mal das Telegram es nicht zulässt, das der Bot sich selber etwas schickt.

Danke nochmal für deine Infos !!!  8)
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 16 Mai 2016, 15:13:52
Hallo zusammen,

nach mehreren Tagen und Anfragen bei Telegram habe ich nun Heute Morgen Antworten vom Telegram Bot-Support bekommen. Nachdem ich unser vorhaben detailiert erklärt habe, kamen folgende Antworten:
Zitat
Bot Support:
mmm, so you want a link to send a message from your account to the bot account directly without using a Telegram app? If that's it, I'm afraid that it is not possible as those links only work for bots .

...und...
Zitat
Bot Support:
No, that's a limitation we set from scratch: bots won't receive messages from bots.

Damit hat sich diese Sache wohl leider auch erstmal erledigt. Auf meine Frage, ob man in der Zukunft evtl. "Special Bots" erschafft, welchen es auch erlaubt sei Nachrichten von anderen Bots auszuwerten, kam dann nur die Antwort, das sich die Entwickler von Telegram nicht wirklich in die Karten schauen lassen und auch diesbezüglich nicht sehr kommunikativ sind was neue Entwicklungen angeht.

Da bleibt wahrscheinlich nur darauf zu hoffen, das man noch etwas am Telegram-Bot Modul in fhem umprogramieren kann, was das Auslesen von Bot-Nachrichten direkt in Befehle umsetzt. Davon habe ich aber so gut wie keine Ahnung...

Auch wäre cool, wenn Markus sich noch einmal zu Wort meldet, ob man in seinen Lösungen evtl. zusammen noch etwas mehr stabilität reinbekommen kann. Es muß doch eine Lösung geben um von IFTTT Resourcen sparend und sicher mit fhem zu kommunizieren...

Die Alternative wäre dann wohl vom IFTTT Maker Chanenl, welcher ja URLS und Code übertragen kann, irgendwelche HTTPS Befehle aus IFTTT an fhem zu senden. Wo man dann in der URL seine Logindaten preisgeben müßte, was ja auch nicht der Sinn der Sache ist...

Vielleicht hat ja jemand noch weitere Ideen, Vorschläge oder Anregungen. Ich bin für alles offen, was zu einer Lösung führt und teste gerne alles von hinten bis vorne durch.  ;)

Greetinx  8)
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: viegener am 18 Mai 2016, 01:04:46
Wie hier https://forum.fhem.de/index.php/topic,38328.msg451927.html#msg451927 (https://forum.fhem.de/index.php/topic,38328.msg451927.html#msg451927) beschrieben ist die Aussage, dass telegramBots keine Nachrichten anderer Bots lesen können auch aus meiner Erfahrung korrekt. Als Alternative bleibt nur das veraltete 70_Telegram-modul mit all den damit verbundenen Einschränkungen.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: febus am 18 Mai 2016, 17:17:30
Mal eine etwas doofe (Leihen-)Frage: Bei mir hat die Einrichtung des Telegram Bots auch problemlos funktioniert und ich erhalte auch die Nachrichten, die ich vom Handy aus an den Bot schicke in FHEM. Zusatzmodule habe ich nicht benötigt -> Super!
Das Problem ist ja nun automatisiert (z. B. via IFTTT Maker) eine Nachricht an den Bot zu schicken.

Ist denn die Technik des TelegramBot-Moduls nicht auf die Pushbullet-API adaptierbar (da gibt es ja einen existierenden IFTTT-Channel)?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: viegener am 18 Mai 2016, 20:56:24
Generell ist es ja relativ einfach eine empfangene Nachricht über einen beliebigen Kanal zu nehmen (per notify die Nachricht nehmen) und dann nach Überprüfung auf ein Schlüsselwort am Anfang und entsprechenden Sicherheitsprüfungen (!) an die perl sub AnalyzeCommand (aus dem fhem.pl) zu übergeben.

Das ist in Kürze der Inhalt der Funktion innerhalb von TelegramBot, ich habe aber selber keine Erfahrung mit pushbullet


Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 21 Mai 2016, 14:28:29
Hallo Johannes,

für dich als Entwickler ist es natürlich einfacher so etwas umzussetzen. ;) Aber bei den Gedanken Per Script umzuschreiben, ist mir zeitlich gesehen gerade etwas unwohl und ich hoffe darauf das dies hier jemand mitliest, der wesentlich firmer darin ist und sich der Sache evtl. mal annimmt, damit fhem endlich mal mit IFTTT vernünftig kommunizieren kann.

Danke  :)
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 07 Juni 2016, 16:31:59
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/ (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
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 11 Juli 2016, 22:44:32
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
...
Titel: Probleme mit PRESENCE Modul
Beitrag von: Alexander Schulz am 06 November 2016, 17:38:25
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?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: hartenthaler am 06 November 2016, 19:16:47
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?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Alexander Schulz am 06 November 2016, 21:14:27
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.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: Murdock am 07 November 2016, 22:17:04
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)
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: mistake am 08 Dezember 2016, 12:53:17
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.
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag 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?
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: viegener am 10 Dezember 2016, 14:08:37
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"

Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: febus am 10 Dezember 2016, 17:06:41
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...
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: febus am 12 Dezember 2016, 21:38:12
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.]
Titel: Antw:Neues Modul: FHEM als Websocket-Client mit Pushbullet bzw. IFTTT-Maker
Beitrag von: viegener am 12 Dezember 2016, 22:32:30
Bots sehen Nachrichten von Bots nicht in Telegram - das geht einfach nicht