[Gelöst] fhem2fhem Status und Steuerung des remote-fhem

Begonnen von Roman, 18 September 2017, 22:06:43

Vorheriges Thema - Nächstes Thema

Roman

Hallo,

ich hab mal ein kleines Problem (evtl. nur ein Denkfehler).

Ich hab auf einem Raspberry eine Relaisansteuerung über RPI_GPIO.
Der Status wird über fhem2fhem an den Hauptserver übermittelt (Identisches Device auf dem Hauptserver angelegt).

Soweit klappt das ganz gut.

Zum schalten vom Hauptserver aus hab ich jetzt ein Notify, dass beim Schalten auf dem Hauptserver einen Telnet Befehl mit schalten auf dem Raspberry auslöst.
Die Statusänderung triggert aber wieder das Notify bei Änderungen und wird so permanent in einer Endlosschleife geschaltet.

Ich hab das dann über einen Dummy das schalten vorgenommen, dies funktioniert zwar, aber der Status zwischen Dummy und Relais weicht dann ab sobald am Raspberry geschaltet wird. Ein Notify, das den Status des Dummy's setzt würde ja auch wieder zu der Endlosschleife führen.


Es müsste doch möglich sein, den Schalter auf beiden Instanzen zu bedienen, und auf beiden Systemen den aktuellen Status angezeigt zu bekommen.

Definition auf Raspberry:
define Trafo_24V RPI_GPIO 5
attr Trafo_24V direction output


Definition auf Server
define Trafo_24V RPI_GPIO 5
attr Trafo_24V direction output

define notify_Travo_24V notify Trafo_24V:.* { system("echo \"set Trafo_24V $EVENT\" | telnet 192.168.156.4 7072")}

# bei einem eingesetzen Dummy wird der Dummy definiert und das notify angepasst
define Trafo_24V_Raspi dummy
attr Trafo_24V_Raspi setList on off
define notify_Travo_24V notify Trafo_24V_Raspi:.* { system("echo \"set Trafo_24V $EVENT\" | telnet 192.168.156.4 7072")}



evtl. kann mich jemand hier erleuchten  ::)

Gruß
Roman

Otto123

Zitat von: Roman am 18 September 2017, 22:06:43
Es müsste doch möglich sein, den Schalter auf beiden Instanzen zu bedienen, und auf beiden Systemen den aktuellen Status angezeigt zu bekommen.
Hallo Roman,

das wird schon gehen, aber das geht doch schon auf einem Server nicht, Du kannst nicht auf den Event triggern, den Du selbst auslöst.  ;)

Eine Idee: FHEM2FHEM andersrum, den dummy auf den Hauptserver schalten und mit FHEM2FHEM den Event auf den GPIO Server übertragen und dort einfach schalten.

Wozu brauchst Du auf beiden Systemen die gleiche Anzeige? Brauchst Du FHEM auf beiden Systemen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Roman

Hallo Otto123,

das fhem2fhem andersrum ist eine gute Idee, das probier ich demnächst mal aus.
Zu beiden FHEM Systeme: ich sag mal ja :)

Mein Hauptserver ist so die allgemeine Schaltzentrale und stellt auch GUI für Bedienung und Information zur Verfügung.
Der kleine Raspberry ist im Keller und hat Strom/Gas/Wasserzähler, Heizung und Zisterne in der Überwachung (alles bisher nur lesend ohne Steuerungsmöglichkeit). Der Status wird ja schön über fhem2fhem gemeldet und am Hauptrechner bzw. Tablet angezeigt.

Nun bin ich am Aufbau einer Bewässerung für den Garten und da hat sich der Keller-Raspi angeboten, da das hier mit der Kabelverlegung für die Ventile etc. wesentlich einfacher ist wie die Kabel bis unters Dach zu legen.
Da meiner Meinung nach sinnvollerweise dann auch die automatische Steuerung über den Raspberry laufen sollte (alles über remote-Kommandos zu steuern  geht zwar, halte ich aber nicht für sinnvoll), jederzeit aber auch ein manueller Eingriff über den Hauptserver möglich sein sollte, müsste der Status schon korrekt angezeigt werden.
Ich selber könnte das zwar noch durchblicken, aber meiner Frau kann ich schlecht erklären, dass momentan der Rasen gesprengt wird, der Schalter mit dem sie das ausschalten kann (weil sie jetzt Wäsche aufhängen will) aber auf AUS steht weil der Status im Button neben dem Schalter  angezeigt wird und sie zum Ausschalten erst AN und dann nochmal AUS schalten muss.

der WAF ist bei solchen Spielereien oft der entscheidende Faktor ob das später auch genutzt wird.
(der automatische Sonnenschutz im Sommer der Rollo's darf auch nur laufen wenn wir nicht zu Hause ein, damit es nicht zu warm wird, wenn wir daheim sind stehen die nie richtig, entweder zu hoch oder zu tief , das ist Tagesformabhängig :) )

Gruß
Roman


Otto123

Moin Roman,

alles klar :) Ich hatte mir mal was zu Tastern ausgedacht und aufgeschrieben
Vielleicht hilft Dir das.

Noch ein paar Tipps:
Du hast auf beiden Systemen das Gerät völlig gleich definiert, ich mache das auf dem zweiten FHEM nur als Dummy. Du schaltest ja mit Deinem Konstrukt unter Umständen auf beiden den GPIO Port.

Ich habe mir mittlerweile angewöhnt:
In F2F nur die Geräte/Events einzutragen die wirklich übertragen werden müssen - also niemals .*
Und wenn es geht, auf dem über F2F gekoppeltem Gerät nur die Events zu verarbeiten und nicht unnütze Dummy zu definieren.

Beispiel (nur Prinzip kein Code):
Instanz 1
dummy Taster1

Instanz 2
FHEM2FHEM LOG:Taster1
notify Taster1:(on|off) set Schalter $EVENT

Wenn Du noch konkrete Beispiele brauchst untersetze ich Dir das gern.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Roman

Hallo,

durch die Tipps von Otto123 und nochmaliges angestrengtes Nachdenken  :-\ hab ich nun folgende Lösung;

Einrichtung von fhem2fhem auf dem Hauptserver für die benötigten Devices wie üblich.

Definition Dummy auf Hauptserver

define Trafo_24V dummy
setreading Trafo_24V last_state off

define notify_Trafo_24V notify Trafo_24V:.*  { my $last_state=ReadingsVal("Trafo_24V","last_state","off");
if ( $last_state ne $EVENT ) {
fhem("setreading Trafo_24V last_state $EVENT") ;
system("echo \"set Trafo_24V $EVENT\" | telnet 192.168.156.4 7072");
};
1;
}


Auf dem Remote-FHEM muss nichts spezielles eingestellt werden.

Durch die Abfrage des letzten Status wird die Endlosschleife durchbrochen.
Mit dieserm Notify ist es egal ob am Haupt-FHEM oder am Remote-FHEM geschaltet wird.
Der Status wird dabei auf beiden Instanzen richtig angezeigt.
Es sind keine Umwege über weitere Dummy's usw. notwendig.

Das sollte sogar nicht nur mit on/off funktionieren,sondern ebenfalls mit on-for-timer etc. je nachdem was das Device auf dem Remote-FHEM eben zulässt.

Gruß
Roman