FHEM ohne Portfreigabe aus dem Internet erreichbar machen: fhem-connect.js

Begonnen von MarcP, 17 Juli 2017, 21:12:22

Vorheriges Thema - Nächstes Thema

MarcP

Hallo Community,

da ich mit einer Portfreigabe aus dem Internet und DynDNS nicht so glücklich war,
habe ich nach einem Weg gesucht, wie ich das umgehen kann, und FHEM trotzdem
aus dem Internet erreichbar machen kann.

Ich habe daher den node.js Server von Werner Schäffer als Basis genommen,
und um einen Websocket Client erweitert.

Dieser verbindet sich mit einem weiteren node.js Server im Internet auf der
Service-Plattform "heroku", die gratis ein Serverhosting erlaubt (Platform as a
Service, PaaS).
An diesen Server auf Heroku können nun Kommandos gesendet werden, die an
den internen FHEM weitergeleitet werden, z.B. über die Webhooks von IFTTT.

Damit habe ich mir dann eine (rudimentäre) Alexa Integration gebaut.

Als Bild sieht das so aus: https://goo.gl/19fB1B
Hier ein beispielhaftes IFTTT-Recipe: https://github.com/MarcProe/fhem-connect.js/raw/master/ifttt-recipe.png

Für mich ist das eine ganz passable Lösung, klappt jedenfalls. Das Ganze
ist aber sicherlich nicht fertig.

Unter https://github.com/MarcProe/fhem-connect.js habe ich eine Anleitung
geschrieben, hier ist auch der Code einsehbar.
Wer mag, kann sich das also mal ansehen.

Viele Grüße
Marc
Javascript Charts für FHEM mit Chart.js: https://git.io/JeoJV

RaspiLED

Hi, wie hast Du das Thema Sicherheit gelöst?
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

MarcP

Hi,

im Heroku-Profil wird ein Schlüssel hinterlegt (als Umgebungsvariable).
Nur mit diesem Schlüssel kann sich ein Websocket an Heroku verbinden.

Um den Webhook aufzurufen ist ein weiterer Schlüssel notwendig.

Alle Verbindungen im Internet (fhem.js => Heroku und Webhook => Heroku) sind SSL gesichert.

Reguläre Ausdrücke erlauben es, die zu akzeptierenden Befehle einzuschränken.

Ich habe das hier mal eingezeichnet: https://goo.gl/19fB1B

Viele Grüße
Marc
Javascript Charts für FHEM mit Chart.js: https://git.io/JeoJV

amenomade

SSL? Sicher?

WSS setzt nicht auf SSL sondern auf XML Encryption. Man kann natürlich dazu noch ssl verwenden, aber hast Du sowas gemacht?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

herrmannj

Zitat von: amenomade am 18 Juli 2017, 15:35:14
SSL? Sicher?

WSS setzt nicht auf SSL sondern auf XML Encryption. Man kann natürlich dazu noch ssl verwenden, aber hast Du sowas gemacht?
Ich glaube da liegt eine Verwechslung vor. SSl unter WS passt schon (ist wss)

vg
joerg

MarcP

Hi,

Zitat von: amenomade am 18 Juli 2017, 15:35:14
SSL? Sicher?

WSS setzt nicht auf SSL sondern auf XML Encryption. Man kann natürlich dazu noch ssl verwenden, aber hast Du sowas gemacht?

Was Du damit jetzt meinst weiß ich leider nicht.

Der lokale node.js Server baut eine wss:// Verbindung auf Port 443 zu Heroku auf, das Ganze wird TLS1.2 verschlüsselt (hab es jetzt gerade mal mit Wireshark mitgeschnitten, ist verschlüsselt).


Secure Sockets Layer
    TLSv1.2 Record Layer: Application Data Protocol: http-over-tls
        Content Type: Application Data (23)
        Version: TLS 1.2 (0x0303)
        Length: 169
        Encrypted Application Data: 31e16e70a4fad6f12978538e8e3012f07c5721f3f91bf914...



Viele Grüße
Marc

Javascript Charts für FHEM mit Chart.js: https://git.io/JeoJV

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

LuBeDa

Zitat von: MarcP am 17 Juli 2017, 21:12:22
Unter https://github.com/MarcProe/fhem-connect.js habe ich eine Anleitung
geschrieben, hier ist auch der Code einsehbar.
Wer mag, kann sich das also mal ansehen.

Das ist richtig klasse! Leider kann ich nicht programmieren sont würde ich auf dieser Basis versuchen einen Node-Red Integration zu programmieren.

Ich versuche mal fhem.js irgendwie mit Node-Red abzugreifen das wäre schon mal ein Schritt in die richtige Richtung.

Weiter so, happy coding.

Ludger

Ma_Bo

Zitat von: MarcP am 17 Juli 2017, 21:12:22
Hallo Community,

da ich mit einer Portfreigabe aus dem Internet und DynDNS nicht so glücklich war,
habe ich nach einem Weg gesucht, wie ich das umgehen kann, und FHEM trotzdem
aus dem Internet erreichbar machen kann.

Ich habe daher den node.js Server von Werner Schäffer als Basis genommen,
und um einen Websocket Client erweitert.

Dieser verbindet sich mit einem weiteren node.js Server im Internet auf der
Service-Plattform "heroku", die gratis ein Serverhosting erlaubt (Platform as a
Service, PaaS).
An diesen Server auf Heroku können nun Kommandos gesendet werden, die an
den internen FHEM weitergeleitet werden, z.B. über die Webhooks von IFTTT.

Damit habe ich mir dann eine (rudimentäre) Alexa Integration gebaut.

Als Bild sieht das so aus: https://goo.gl/19fB1B
Hier ein beispielhaftes IFTTT-Recipe: https://github.com/MarcProe/fhem-connect.js/raw/master/ifttt-recipe.png

Für mich ist das eine ganz passable Lösung, klappt jedenfalls. Das Ganze
ist aber sicherlich nicht fertig.

Unter https://github.com/MarcProe/fhem-connect.js habe ich eine Anleitung
geschrieben, hier ist auch der Code einsehbar.
Wer mag, kann sich das also mal ansehen.

Viele Grüße
Marc


Hey Marc,
du schreibst bei github

ZitatHeroku allows you to execute a server for 550 hours (22 days) per month (1000 hours (42 days) if you give them your credit card info) for free.

Wie genau wird das berechnet?
Wie viele Webhooks sind das ungefähr?

Ich suche im Moment auch eine elegante und SICHERE Lösung um aus dem Internet (IFTT usw.) Webhooks oder wie auch immer auszuführen und dann ein Dummy Reading in FHEM zu beschreiben.

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

andies

Gibt es einen Grund, warum VPN von Euch nicht eingesetzt wird? Ich kenne mich nicht gut genug aus und will vermeiden, auf einmal meine Seite offen zu sehen (ich nehme VPN).


Gesendet von iPad mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

ThoTo

Zitat von: andies am 26 Oktober 2017, 08:58:45
Gibt es einen Grund, warum VPN von Euch nicht eingesetzt wird? Ich kenne mich nicht gut genug aus und will vermeiden, auf einmal meine Seite offen zu sehen (ich nehme VPN).

Mit VPN kannst DU auf dein FHEM zugreifen, nicht jedoch zB. IFTTT (für die angesprochene Alexa-Integration).
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)