[gelöst] FHEM Werte von externem Rechner.

Begonnen von DocPepper, 26 November 2018, 23:13:06

Vorheriges Thema - Nächstes Thema

DocPepper

Moin Community,

vielleicht kann mir ja jemand helfen. Ich frage auf einem Linux Rechner in meinem Netzwerk per Script einen Wert ab. Gibt es einen Weg, diesen Wert in FHEM einzulesen/zu schreiben?

Gruss
DocPepper

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

DocPepper

Öhm... DAmit kann ich leider garnichts anfangen. Was hat den das Sicherheitstoken damit zu tun?

Vielleicht habe ich mich auch falsch ausgedrückt.

- Ich frage auf meinem Linux Rechner (ohen FHEM) ab, ob das Netzwerk über VPN läuft.
- Ich möchte nun in meinem FHEM anzeigen lassen, ob die VPN Verbindung auf dem externen Linux Rechner besteht, oder nicht.

Gruss
DocPepper

connormcl

#3
Hast du nur die erste Zeile gelesen? Wenn du immer so rangehst, wirds mit FHEM schwierig!

Die Seite zeigt dir, wie von aussen ein Wert nach FHEM hereinkommen könnte...ein anderer Weg, den du auch implementieren könntest, wäre den Wert von FHEM selbst holen zu lassen...


Also:
Einfach mal die ganze Seite zum CsrfToken bis zum Ende durchlesen...

Dann verstehen...

Dann umsetzen... oder adaptieren... oder verwerfen, wenn es nicht zum Konzept passt und eher FHEM selber die Werte holen soll...(dann halt Perl lernen und selbst umsetzen)


LuckyDay

Du kannst auch in die Telnet schnittstelle schreiben, nur mal als Beispiel

https://forum.fhem.de/index.php/topic,24904.msg179738.html#msg179738

da gibt es noch mehr möglichkeiten

Peteruser

Hallo,
ich mach sowas über MQTT.
Siehe : https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung

Da noch eine Abfrage wie alt das Reading ist um ein Problem mitzubekommen.

Grüße Peter
Ubuntu+Debian FHEM + ESPEasy + Homematic + ConBee + DUROFERN

Morgennebel

Zitat von: DocPepper am 26 November 2018, 23:52:10
- Ich frage auf meinem Linux Rechner (ohen FHEM) ab, ob das Netzwerk über VPN läuft.
- Ich möchte nun in meinem FHEM anzeigen lassen, ob die VPN Verbindung auf dem externen Linux Rechner besteht, oder nicht.

Ansatzproblem: wenn Rechner 1 im VPN ist, sollte er nicht mehr mit Rechnern im lokalen LAN reden können. Denn er ist ja im VPN - in einem anderen LAN...

Daher geht Telnet, MQTT, ... usw. eigentlich nicht, denn die Rechner erreichen sich nicht mehr.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Beta-User

Na ja, wenn es darum geht festzustellen, ob ein Rechner außerhalb des Netzwerks ist oder innerhalb (also VPN steht), könnte auch PRESENCE mit Ping gehen.
Oder ein notify auf ein Fritzbox-Event möglich sein (ungeprüft, wie im Wiki).

Beides geht aber nur mit einer gewissen Verzögerung.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Morgennebel

Das hängt aber alles von Deinem VPN-Client ab.

Bei uns machen die Firmen-VPN-Clients jedwede Kommunikation im internen Netz unmöglich.

Aber Du hast natürlich einen Punkt - irgendwie muß der Rechner auch trotz VPN via dhcp eine IP-Adresse beziehen können...

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Beta-User

Hmm,

ich hatte es so verstanden, dass der Rechner eigentlich außerhalb ist ("...auf dem externen Linux-Rechner..."), aber gelegentlich dann via VPN in dasselbe Netz kommt wie der FHEM-Server. Unter anderen Vorbedingungen ist das mit dem Ping oder Fritten-Ereignis vermutlich keine Option.

Ansonsten könnte man auch mit ssh-Verbindung versuchen, eine Datei auf dem externen Rechner zu lesen (mit VPN-Beginn als Inhalt?) oder oder oder... Es gibt eigentlich immer (fast zu) viele Optionen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DocPepper

#10
Zitat von: connormcl am 27 November 2018, 00:06:46
Hast du nur die erste Zeile gelesen? Wenn du immer so rangehst, wirds mit FHEM schwierig!

(...)

Dann umsetzen... oder adaptieren... oder verwerfen, wenn es nicht zum Konzept passt und eher FHEM selber die Werte holen soll...(dann halt Perl lernen und selbst umsetzen)

Nein, ich habe durchaus bis zum Ende gelesen. Und nach Deinen Ausführungen gerade eben noch einmal... Vielleicht habe ich deswegen ins Anfängerforum geschrieben!?
Auch beim zweiten lesen, erkenne ich keinen für mich nützlichen Ansatz, weil ich eben Anfänger bin!

@all responders
Vielen Dank für die Lösungsansätze! Ich werde mich da mal einlesen! Beim lesen der Antworten muste ich feststellen, dass das technische Problem von mir nicht ausreichend beschrieben wurde!

Ich sitze zu hause und habe ein lokales Netzwerk. In diesem Netzwerk befindet sich ein Linux-PC, der seine Verbindung nach außen (Internet) über ein VPN-Tunnel realisiert. Extern habe ich ihn (missverständlich) genannt, weil das nicht der PC ist, auf dem FHEM läuft. Dieser PC befindet sich natürlich auch nach Aufbau des Tunnels in meinem lokalen Netzwerk. Nur alle Verbindungen, die über das Gateway geroutet werden, gehen durch den Tunnel!

Ich frage nun per Script ab, ob die externe IP dieses PC meine Provider-IP ist, oder die des Ausgangs des Tunnels. (done) Das Ergebnis dieser Prüfung würde ich gerne in FHEM darstellen. (todo)

Ich hoffe, ich habe alle Klarheiten beseitigt. ;)

Morgennebel

Zitat von: DocPepper am 27 November 2018, 14:15:23
Ich sitze zu hause und habe ein lokales Netzwerk. In diesem Netzwerk befindet sich ein Linux-PC, der seine Verbindung nach außen (Internet) über ein VPN-Tunnel realisiert. Extern habe ich ihn (missverständlich) genannt, weil das nicht der PC ist, auf dem FHEM läuft. Dieser PC befindet sich natürlich auch nach Aufbau des Tunnels in meinem lokalen Netzwerk. Nur alle Verbindungen, die über das Gateway geroutet werden, gehen durch den Tunnel!

Wie vermutet... :)

Dann stellt sich die Frage, ob Dein Linux-PC beim aufgebauten VPN eine HTTP-Verbindung zu Deinem FHEM Server aufbauen kann.

Wenn Ja, kannst Du einfach bei Wechsel der Gateway-IP eine Aktion auslösen und einen FHEM-Dummy befüllen.
Wenn Nein, kann es an der Konfiguration des VPN-Clienten liegen. Kannst Du die nicht ändern, bleiben nur Out-of-Band-Lösungen (USB, Relais, ...), damit umgehst Du aber wieder das VPN.

Ist es ein Arbeitsplatz-/Firmen-VPN oder ein VPN zum besseren Peer2Peer ohne Spuren zu hinterlassen?

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

DocPepper

Zitat von: Morgennebel am 27 November 2018, 14:41:56
Ist es ein Arbeitsplatz-/Firmen-VPN oder ein VPN zum besseren Peer2Peer ohne Spuren zu hinterlassen?

Was soll ich sagen... ;) Es ist kein Firmen-PC

Aktuell versuche ich als schnelle Lösung die Telnet-Variante. Da die mir aber erstmal quick 'n dirty rüberkommt, schaue ich mir MQTT später in Ruhe an.

DocPepper

Zitat von: Morgennebel am 27 November 2018, 14:41:56
Dann stellt sich die Frage, ob Dein Linux-PC beim aufgebauten VPN eine HTTP-Verbindung zu Deinem FHEM Server aufbauen kann.

FHEM und der besagte PC befinden sich in einem gemeinsamen LAN.

DocPepper

#14
Falls hier mal ein Newbie wie ich reinschaut:

Ich habe in FHEM ein dummy angelegt:

define vpnip dummy

Ich habe auf dem "externen" Rechner ein Script erstellt:

#!/bin/bash
vpnip=$(curl http://my.ip.fi)
echo "setreading vpnip ip $vpnip"  > vpnip.txt
grep ":" ./vpnip.txt
if [ $? -eq 0 ]
        then
                echo "setreading vpnip state aktiv" >> vpnip.txt
        else
                echo "setreading vpnip state inaktiv" >> vpnip.txt
                echo "VPN wird neu gestartet..."
                service openvpn restart
                sleep 10
                curl http://my.ip.fi | grep :
if [ $? -eq 0 ]
        then
                echo "Erfolgreich!"
        else
                echo "nicht erfolgreich!"
        fi
fi



Ich sende die Datei vpnip.txt mittels nc (netcat) an den TelnetPort meines FHEM (musste ich erst anlegen s. WIKI)

Danke für den entsprechenden Hinweis! Ich schaue mir an, ob das mit MQTT eleganter/sicherer geht. ;)