Readingsgroup vom Slave auf den Master integrieren/duplizieren

Begonnen von danieljo, 05 September 2015, 14:59:45

Vorheriges Thema - Nächstes Thema

danieljo

Hallo,

Nun mal ein Problem was ich nicht wirklich gelöst bekomme.

Und zwar habe ich 2 RPi mit jeweils einer FHEM Instanz:

RPi 1 (Master) 192.168.1.33 = HauptFHEM an diesem sind diverse Sensoren usw angeschlossen  über diesen möchte ich soweit alles von dem 2.ten Rpi 2 (Slave) angezeigt bekommen.

Rpi 2 (Slave) 192.168.1.110 = AquariumFHEM an diesem ist eine 8 Kanal Relais Karte angeschlossen und ein DS18B20 am GPIO der mir die Wassertemperatur anzeigt. Dort habe ich mir mit Threshold ein Thermostat zusammengebastelt. Dieser misst die Wassertemperatur und schlatet bei Bedarf ein Relais mit angeschlossen Heizung an.

Um eine schönere Übersicht zu bekommen habe ich auf dem (Slave) eine readingsgroup erstellt in der <Soll> <Soll neu> <Ist> und ein Status abhängiges Icon eingestellt habe. Sieht sehr gut aus und funktioniert tadellos. Das ganze ist aber wie gesagt aber auf dem Slave.

Voraussetzung ist das auf dem Slave RPi das auch so bleibt. Ich möchte allerdings auf dem Master Rpi in FHEM genau diese readingsgroup angezeigt bekommen.

Ob ich das Thermostat auch dann auf dem Haupt ändern kann ist die andere Sache.

Mit FHEM2FHEM RAW bekomme ich keine Verbindung da der DS18B20 am GPIO4 anscheinend keine RAW messages ausgibt. Über FHEM2FHEM Log bekomme ich auf dem Master zwar die Log einträge vom Slave aber weiter komme ich auch nicht.

Als Anhang habe ich mal die readingsgroup als Foto angehängt.

danieljo

Ich habe mal etwas im Forum gesucht. Es gab wohl mal ein Modul namens: RFHEM. Mit dem es möglich sein Befehle im WebGui direkt auf das Device aus dem Slave zu schicken.

Also ich will vom Master aus den Befehl

FHEM2FHEM Aquarium_Thermostat desired_value: 28.0

setzen.

Mittels FHEM2FHM Log sehe ich Event Einträge auf dem Master wenn ich den Threshold vom Device Aquarium_Thermostat auf dem Slave ändere.

So sollte es dann doch irgendwie auch möglich sein vom Master aus diesen Werte auf dem Slave zu setzen?

justme1968

das modul ist nicht eingecheckt aber du kannst die variante aus dem thread verwenden.

im gleichen thread habe ich auch eine auf readingsProxy basierende version gepostet.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

danieljo

Danke ich werde mal suchen und lesen. Aktuell gibt es aber noch andere Probleme die ich erstmal beheben will.

Übermittelte Event Werte in einen CloneDummy schreiben irgendwie scheitert es am Stateformat. Bin seid 4 Stunden dran und komme zum kot*** nicht weiter :-\

danieljo

Also fange ich besser mal ganz klein an da es schon an einfachen Sachen scheitert:

Auf dem SLAVE ist ein DS18B20 Sensor angeschlossen. Dieser generiert folgende EVENTS auf dem SLAVE:

2015-09-05 22:05:05 GPIO4 Wasser_Temperatur T: 25.187
2015-09-05 22:05:05 GPIO4 Wasser_Temperatur temperature: 25.187


Auf dem MASTER habe ich mittel FHEM2FHEM das Device => "192.168.1.110:7072 LOG:Wasser_Temperatur" unter den Namen "Wasser_Temperatur" erstellt.

Dieser empfängt folgende Daten vom Slave und generiert nachfolgende EVENTS auf dem MASTER:

2015-09-05 22:07:08 FHEM2FHEM Wasser_Temperatur T: 25.187
2015-09-05 22:07:08 FHEM2FHEM Wasser_Temperatur temperature: 25.187


Soweit so gut. Jetzt möchte ich auf dem MASTER ein  Dummy oder cloneDummy erstellen der mir den Temperatur Wert anzeigt. Mittels cloneDummy wird mir immer nur _state angezeigt .....

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

danieljo

Den clonedummy habe ich wie folgt angelegt:

define TEST cloneDummy FHEM2FHEM T:

justme1968

es gibt kein reading T. deshalb geht T: auch nicht. du musst temprrature verwenden. ich glaube da fehlt auch noch ein .* danach.

wenn es nur ein einziges reading ist kannst du hier auch readungsProxy verwenden wenn du zum schalten auch etwas zurück übertragen willst.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

danieljo

#8
Vielen Dank für den Tipp. Habe jetzt den CLone dummy nach "define TEST cloneDummy Wasser_Temperatur temperature:.*" geändert jetzt klappt es  auch. Es lag anscheind wirklich an dem .*

Mgast du mir kurz und knapp erläutern was der readingsprox macht und tut.

AUF dem SLAVE habe ich folgende variablen aus dem THRESHOLD modul welche ich vom MASTER aus Steuern bzw. Lesen möchte.

"desired_value" soll lesend und schreibend auf dem Master eingebunden werden
"sensor_value" soll nur lesend auf dem Master eingebunden werden.
"state" soll ebenfalls nur lesend eingebunden werden.

Im Event Monitor auf dem MASTER sehe ich folgende Einträge vom SLAVE wenn ich im THRESHOLD den "desired_value" ändere:

Events (Filter:THRESHOLD):
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat mode: active
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat cmd: wait for next cmd
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat threshold_min: 27.25
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat threshold_max: 27.5
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat desired_value: 27.5
2015-09-06 12:34:45 THRESHOLD Aquarium_Thermostat cmd: cmd2_lt
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat mode: active
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat cmd: wait for next cmd
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat threshold_min: 22.25
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat threshold_max: 22.5
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat desired_value: 22.5
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat cmd: cmd1_gt
2015-09-06 12:34:57 THRESHOLD Aquarium_Thermostat off
2015-09-06 12:36:09 THRESHOLD Aquarium_Thermostat sensor_value: 25.062


Das ganze am liebsten in einer readingsgroup so wie ich es auf dem SLAVE auch habe. Mehr will ich ja auch gar nicht :D

Ich habe den CloneDummy jetzt auf "Aquarium_Thermostat sensor_value:.*" angesetzt.

Somit bekomme ich im CloneDummy folgende Readings angezeigt:

T 25 2015-09-06 12:38:13
cmd cmd1_gt 2015-09-06 12:39:49
desired_value 25.0 2015-09-06 12:39:49
mode active 2015-09-06 12:39:49
sensor_value 25.062 2015-09-06 12:38:43
state active 2015-09-06 12:39:49
temperature 25 2015-09-06 12:38:13
threshold_max 25 2015-09-06 12:39:49
threshold_min 24.75 2015-09-06 12:39:49


Wären sie vllt. so freundlich und könnten mir da ein wenig helfen wenn sie die Zeit haben oder jemand anderes aus dem Forum der schon was Fortgeschrittener ist?


danieljo

#9
Ich bin ein wenig weiter.

auf dem Master habe ich jetzt eine neue readingsgroup erstellt diese liest jetzt die Variablen <Soll><Ist> und <status> aus den jeweiligen erstellten cloneDummy's aus.

Was mir jetzt noch fehlt ist die variable in der readingsgroup <Soll neu> / <sollsetz> mittels einem auswahl menü. Integrieren kann ich die funktion nur bekomme ich natürlich nen Fehler da "set" im cloneDummy nicht integriert ist. Gibt es eine möglichkeit in der readingsgroup unter "commands" eine set befehl abzusetzten der einen "HTTP set befehl zum SLAVE" absetzt. Dazu müsste ich die variable an ein @device anhängen. Ich denke aber das get so ohne weiteres nicht.

Hier die configuration der readingsgroup auf dem Master:

define TEST3 readingsGroup <%icoTempWasser>,<Soll>,<Soll neu>,<Ist>,<Status> / FHEM_Aquarium_Threshold:desired_value,<sollsetz>,temperature@Aquarium_1_Temperatur,cmd
attr TEST3 alias Aquarium Thermostat
attr TEST3 commands {  'TEST3.sollsetz'=>'desired:20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0',"set Aquarium_thermostat desired"}
attr TEST3 valueFormat {desired_value => "%.1f°C",temperature => "%.1f°C"}
attr TEST3 valueIcon {'cmd.cmd2_lt' => 'general_an@green','cmd.cmd1_gt' => 'general_aus@white'}


Ich denke für das <sollsetz> uss ich noch ein neues "dummy" device anlegen welches den "set" Befehlt entgegen nimmt und per HTTP Befehlt an den SLAVE weiterschickt !?

justme1968

du kannst in commands auch ein ganz normales set auslösen.

aber schau dir mal den post hier: http://forum.fhem.de/index.php/topic,23638.msg169368.html#msg169368 an und den zugehörigen von UliM etwas weiter oben. da siehst du wie es mit logProxy funktionieren würde.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

danieljo

Das heißt mit readings Proxy kann ich mir ein device anlegen welche alle funktionen in ein device anlegt und ich somit desired_value, sensor_value, status (on/off) direkt steuern kann ohne clonedummys die ich für jeden wert extra anlegen muss. Stehe was auf dem Schlauch was die genaue Funktion betrifft. Bzw. Welche Möglichkeiten ich damit habe.

danieljo

#12
das mit dem readingsproxy verstehe ich immer noch nicht. Bin glaube ich zu blöd dafür  :o

Ich habe mir auf MASTER jetzt eine Verbindung zum Senden von Befehlen auf dem SLAVE eigebaut mittels RFHEM funktioniert schonmal Super.

Mittels dem Befehl:

set RemotePI cmd set Aquarium_Thermostat desired 26.0

Kann ich jetzt den Wert "desired" des THRESHOLD Moduls "Aquarium_Thermostat" auf 26.0 setzen auf dem SLAVE.

Was mir jetzt noch fehlt ist diesen Befehl in "commands" der readingsgroup auf dem Master einzubauen.

Dies habe ich hier schonmal eingebaut:

{'TEST3.sollsetz'=>'desired:20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0',"set RemotePI cmd set Aquarium_Thermostat desired"}

Die Definiton von readingsgroup auf dem Maste rsieht so aus:

<%icoTempWasser>,<Soll>,<Soll neu>,<Ist>,<Status> \ FHEM_Aquarium_Threshold:desired_value,<sollsetz>,temperature@Aquarium_1_Temperatur,cmd

Das Proble ist das beim Ausführen ein Feler erscheint da "FHEM_Aquarium_Threshold" keine SET Befehle empfangen kann. Das heißt ich muss <sollsetz> so umbiegen das der zu setzende Wert "desired" für <sollsetz> in FHEM ausgeführt werden muss und nicht für das Device "FHEM_Aquarium_Threshold".

Wenn ich trotzdem im auswahl Menü auf einen Wert klicke kommt die Fehlermeldung das "set" nicht in "FHEM_Aquarium_Thermostat" implementiert ist. Und im Log erscheint folgenden:

2015.09.07 18:03:04 4: HTTP FHEMWEB:192.168.1.117:59188GET /fhem?cmd=set%20FHEM_Aquarium_Threshold%20desired%2028.5&XHR=1

Statt /fhem?cmd=set%20FHEM_Aquarium_Threshold ..... sollte es aber /fhem?set RemotePI cmd set Aquarium_Thermostat desired 28.5 heißen.