Aktionen auf Remoteserver ausführen (FHEM2FHEM)

Begonnen von Borkk, 24 März 2014, 19:45:13

Vorheriges Thema - Nächstes Thema

Borkk

Hallo zusammen,

ich plage mich seit ein paar Tagen mit einem Problem rum und komme nicht zu einem smarten Ergebnis.

Ausgangslage:
Es geht um 2 FHEM Installationen. Eine auf einem RPI und eine auf einer FB7490. Beide sind via "FHEM2FHEM LOG:.*" gekoppelt. Der RPI ist Haupt- die FB ist Remoteserver. Ich nutze die FB nur für PRESENCE Meldungen von WLAN Geräten um RESIDENTS Stati zu setzen. Das funktioniert einwandfrei da ich am Hauptserver einfach die PRESENCE Readings des Remoteserver direkt über notify´s auswerten kann.

So weit so gut. Ich möchte nun das Gast-WLAN der FB mittels FHEM ein/ausschalten. (siehe : http://forum.fhem.de/index.php/topic,11297.0.html) Das funktioniert über die FHEM Oberfläche auf dem FHEM der FB auch soweit.

So nun zu meinem Problem.

Ich möchte nun mittels einem Homematic Schalter das WLAN ein/ausschalten. Den ganzen HM Kram habe ich natürlich auf dem RPI installiert. Aber wie bekomme ich jetzt irgendeinen Befehl vom Hauptserver auf den Remoteserver. Das klingt erst mal einfach aber der Teufel steckt im Detail.

1.Versuch:
Einfach eine zweite "FHEM2FHEM LOG:-*" Koppelung in umgekehrte Richtung herstellen. -> JA, das funktioniert grundsätzlich allerdings geht die FB unter der Last der ganzen Meldungen vom RPI FHEM in die Knie.

2.Versuch:
Eine auf ein Gerät begrenzte "FHEM2FHEM LOG:HM_Switch" Kopplung von FB zum RPI schalten. -> JA, auch das geht grundsätzlich aber auch hier sausen viele 1000 Meldungen/min völlig sinnlos zur FB und belasten sie.

3. cloneDummy:
Hab ich irgendwie in diese Richtung nicht an den Start bekommen.

Wer hat eine Idee. Es muss lediglich ein Dummy Device mit setstate on/off auf dem Remoteserver geschaltet werden.
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

der-Lolo

ich habs nicht probiert - aber vielleicht reicht es wenn du die fritzbox per telnet von der hauptinstallation aus ansprichst...

Joachim

Moin Borkk,

Zitat3. cloneDummy:
Hab ich irgendwie in diese Richtung nicht an den Start bekommen.

Wenn Du nicht penibel aufpasst, gibt das z.Z. noch eine Rekursion, da auf beiden Systemen FHEM2FHEM aktiv sein muß.
Ich würde davon im Moment noch die Finger lassen.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

rudolfkoenig

Die FHEM2FHEM LOG Regexp koennte genauer spezifiziert werden, damit nur die notwendigen Events verschickt werden.

betateilchen

Zitat von: der-Lolo am 24 März 2014, 20:06:44
ich habs nicht probiert - aber vielleicht reicht es wenn du die fritzbox per telnet von der hauptinstallation aus ansprichst...

oder zur Not sogar per http :)

Grundsätzlich funktioniert sowas ganz ohne FHEM2FHEM.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Borkk

Per Http wäre mir das lieber da ich aus Sicherheitsgründen den Telnetd auf der FB nicht offen lasen möchte. Allerdings fehlt mir dazu jeder Ansatz wie man sowas macht. Man muss sich ja auch authentifizieren...
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

erwin

Hi Borkk,

evtl. wäre das eine Lösung für dich: http://www.fhemwiki.de/wiki/Anwesenheitserkennung_-_Remote_Fritzbox
Bei Variante 2 braucht's kein FHEM / Telnet auf der Fritzbox.
Und wie man per http die weboberfläche abfrägt, ist auch mit drin!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Borkk

Hallo Zusammen,

danke für die Tipp´s aber ich glaube ich stehe kurz vor der Lösung. Ich brauche nur über einen Notify auf dem Hauptserver einen Http Befehl auf dem Remoteserver abzusetzen:

Im Browser klappt das problemlos so:

Gast WLAN einschalten: http://192.168.1.2:8083/fhem?cmd=set WLAN on

Gast WLAN ausschalten: http://192.168.1.2:8083/fhem?cmd=set WLAN off

Eigentlich ganz simpel :-)

Leider klappt es noch nicht über einen GetHttpFile. (http://www.fhemwiki.de/wiki/HTML_Aufruf_senden)

Ich habe bisher folgende Syntax versucht:

define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set WLAN on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set%20WLAN%20on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set%%20WLAN%%20on") }

Und das ganze noch mal so:

define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set WLAN on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set%20WLAN%20on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set%%20WLAN%%20on") }

Leider passiert gar nichts :-( Weder mit einen trigger noch am Schalter selbst.

Muss evtl. auf RPI FHEM noch was installiert werden um GetHttpFile nutzen zu können?
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

rudolfkoenig

"attr lobal verbose 5" setzen, und beobachten, was gesendet wird.

Mitch

#9
Kann jetzt gerade nicht testen, aber sollte es nicht so funktionieren:
system ("http://192.168.1.2:8083/fhem?cmd=set WLAN on")

ansonsten feällt mir noch CURL ein:
curl -s http://192.168.1.2:8083/fhem?cmd=set WLAN on
FHEM im Proxmox Container

erwin

Hi Borkk,
ZitatIch habe bisher folgende Syntax versucht:

define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set WLAN on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set%20WLAN%20on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set%%20WLAN%%20on") }

Und das ganze noch mal so:

define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set WLAN on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set%20WLAN%20on") }
define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083/fhem?cmd=set%%20WLAN%%20on") }

Leider passiert gar nichts :-( Weder mit einen trigger noch am Schalter selbst.
ich denke, du scheiterst am Web-Login:
schau dir bitte die sub FB_doCheckPW (in FritzBoxUtils.pm) an....

ich habs so gelöst:

use FritzBoxUtils;
.
.
.
   my $sid = FB_doCheckPW($ipstring,$user,$pwd);
   Log3 "RemoteFritzBox", 5, "Login SID=$sid";

   if (! $sid || $sid eq "0") {
      Log3 "RemoteFritzBox", 1, "Login to Fritzbox failed";
      return "Fritzbox login failed";
   }

   my $url = "http://$ipstring/wlan/wlan_settings.lua" . '?sid=' . "$sid";
   Log3 "RemoteFritzBoxWeb", 5, "HTTP request=$url";
   my $request = {hideurl   => 0,
               url       => $url,
               timeout   => 3,
               data      => '',
               noshutdown=> 1,
               loglevel  => 5,
             };
   my ($err, $data) = HttpUtils_BlockingGet($request);
   if($err) {
      return "RemoteFritzBoxWeb error $err during Web query";
   }

... danach steht in $data der Inhalt der Web-Seite.....

have fun
erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

limats

Hallo,

ich denke, das ist nicht das Problem, da er ja keinen Request auf die Fritzbox-Oberfläche machen will, sondern auf den FHEM, der auf der Box installiert ist.

Ich hab übrigens genau die gleiche Thematik bei mit mit zwei gegenläufigen FHEM2FHEM gelöst. Funktioniert astrein. Allerdings muss man wie oben bereits erwähnt aufpassen, dass man die RegEx für die zu übermittelnden Log-Einträge richtig setzt.

Gruß
Leo
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

Borkk

#12
@Limats: Genau, ich möchte einen Dummy auf dem FHEM der FB setzen, den Rest macht dann der FHEM schon  und wie schon geschrieben kann ich den o.g. Request von einem beliebigen Browser in meinem LAN ausführen.

@Mitch: Sorry wenn ich auf dem Schlauch stehe. Was sind das für Befehle die du dort erwähnst??? Ist das ein Teil eines Notify´s ??

Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

Borkk

Hallo Zusammen,

Ok, ich habs. So gehts:

define wlan_ein notify w_schalter:on { GetHttpFile("192.168.1.2:8083", "/fhem?cmd=set%%20WLAN%%20on") }

Scheinbar hatte ich genau diesen Syntax dann doch nicht ausprobiert.

Danke für Eure Hilfe  :)
Proxmox & Docker:  FHEM, Raspberrymatic, ConBee3, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana, HmIP Akt- /Sensoren, Shelly´s, Alexa, ASC, Gardena, E-Paper, FritzBox; (Tado° x), iBeacon, OLED ; ESP32/8266, SwitchBot ... (Netatmo & Homekit über HomeAssistant)

Gunther

Kannst Du mir bitte im Detail erklären, was Du auf der Fritzbox und auf dem RPI in der fhem.cfg gemacht hast?

Möchte ebenfalls WLAN und Gast-WLAN schalten können.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden