cloneDummy und FHEM2FHEM

Begonnen von HRueck, 24 Januar 2015, 18:30:00

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo Herbert,
Danke für deine Antwort, ich werde morgen weiter experimentieren.  Fhem2fhem benutze ich auch mit Temperatursensoren. Da lassen sich die Readings ganz einfach clonen, deshalb denke ich, dass es einfacher gehen muss.

Vielleicht hat ja noch jemand einen Tipp für uns....
Gruß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

volschin

Genau das scheint das Problem zu sein. Ihr verwendet keine Readings. Clonedummy clont Readings. D.h. Ihr solltet beim Dummy nicht direkt in den state schreiben, sondern ein Reading.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Spartacus

#17
Moin
Zitat von: volschin am 25 Januar 2015, 23:18:54
Genau das scheint das Problem zu sein. Ihr verwendet keine Readings. Clonedummy clont Readings. D.h. Ihr solltet beim Dummy nicht direkt in den state schreiben, sondern ein Reading.
Moin,
naja, das ist bei Dummy-Devices i.d.R. so! Man könnte das mit setreading vielleicht einbauen, aber das ist auch von hinten durch die Brust!

Offenbar gibt es keine saubere Lösung für diese Anforderung....

@Herbert:
Deine Lösung mit DOIF verstehe ich irgendwie nicht. Wie übergibst du die Daten von Rpi1 auf Rpi2?
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

HRueck

Nachdem also anscheinend wirklich keine "straight foreward" Lösung existiert, kann man wohl zusammenfassend feststellen, dass cloneDummy zusammen mit FHEM2FHEM nicht wie ursprünglich von mir gedacht eingesetzt werden kann.
Da das Modul ja Dummies clonen soll, sollte es das aber eigentlich schon komplett abdecken.
Vielleicht könnten sich ja die Entwickler dessen mal annehmen.......

So und nun nochmal zu meiner DOIF Ersatzlösung:

Ich will auf meinem RasPi1 die  Werte der Dummies von RasPi2 anzeigen, also:

define RasPi2 FHEM2FHEM 192.168.x.x:7072 LOG:.* (in der fhem.cfg auf RasPi1)

Das Dummy auf RasPi2 z.B.:

define Feiertag dummy
attr Feiertag webCmd ja:nein
define StartFeiertag notify global:INITIALIZED.* {fhem("set Feiertag nein")}

Der Clone auf RasPi1:

define RasPi2Feiertag dummy
define SetRasPi2Feiertag DOIF ([Feiertag] =~ "ja")({fhem("set RasPi2Feiertag ja")}) DOELSE ({fhem("set RasPi2Feiertag nein")})
attr SetRasPi2Feiertag do always

Damit wird der Wert ja/nein im Frontend von RasPi1 angezeigt. Mehr wollte ich ja auch nicht.
Ich kann aber die Werte nicht von RasPi1 aus ändern, also eine Einbahnstrasse.

Die Werte von Feiertag werden ja bei Änderung als events über FHEM2FHEM von RasPi2 auf RasPi1 übertragen, so dass ich damit weiterarbeiten kann indem ich je nach Status von Feiertag andere Aktionen auslösen kann.
Der Clone dient als bei mir also nur zur Visualisierung.

Gruss Herbert

volschin

#19
Zitat von: HRueck am 27 Januar 2015, 09:33:25
Da das Modul ja Dummies clonen soll, sollte es das aber eigentlich schon komplett abdecken.
Vielleicht könnten sich ja die Entwickler dessen mal annehmen.......
Ich glaube hier liegt Dein Missverständnis. Das Modul soll nicht Dummys clonen, sondern ist ein Dummy mit Clone-Funktion. Dabei cloned er Readings des spezifizierten Devices.

Das steht auch klar so in der CommandRef:
ZitatThis module provides a cloneDummy which will receive readings from any other device sending data to fhem.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

HRueck

mir ist der Unterschied zwischen readings und state schon klar!
das problem ist halt, dass bei einem "einfachen" dummy, das nur states einnehmen kann, dieser nicht geklont werden kann, weil es eben kein reading ist.
und der Vorschlag war, zu prüfen, ob man das in Zukunft mit dem Modul cloneDummy nicht ebenfalls abdecken könnte.

Joachim

Moin HRueck,

Zitatdas problem ist halt, dass bei einem "einfachen" dummy, das nur states einnehmen kann, dieser nicht geklont werden kann, weil es eben kein reading ist.

Das ist so falsch!
Auch ein Dummy kann readings haben, siehe userReadings.

Zitatund der Vorschlag war, zu prüfen, ob man das in Zukunft mit dem Modul cloneDummy nicht ebenfalls abdecken könnte.

Wenn es Dir wichtig ist, darfst Du gerne einen Patch dafür schreiben, ich sehe dazu z.Z. keine Veranlassung, s.o.

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

Spartacus

Zitat von: Joachim am 27 Januar 2015, 18:27:54
Moin HRueck,

Das ist so falsch!
Auch ein Dummy kann readings haben, siehe userReadings.

Wenn es Dir wichtig ist, darfst Du gerne einen Patch dafür schreiben, ich sehe dazu z.Z. keine Veranlassung, s.o.

Gruß Joachim
Hallo Joachim,
ich nehme an, Du bist der Entwickler des CloneDummy-Moduls. Ich nutze es erfolgreich mit meinen 1-Wire und Lacrosse Sensoren und das klappt wunderbar! Danke, dass Du Deine Arbeit der fhem-Gemeinde zur Verfügung stellst!

Allerdings versuche ich gerade auch, Werte eines Dummy-Devices (Abfall-Abholung-Countdown, SchulferienStart/Ende-Countdown) per cloneDummy an ein anderes fhem-System zu übertragen, um es dort nicht erneut berechnen lassen zu müssen. Ich habe schon überlegt, ein Reading in das Dummy-Device einzubauen, aber das ist m.E. nur ein Workaround, da die Information aus den Berechnungsroutinen zwei mal -und damit redundant- gesetzt werden muss (Zumindest habe ich keine bessere Idee, wie es eleganter gehen könnte). Einmal mit "set Dummy <Wert>" und einmal über "setreading Dummy <ReadingName> <Wert>".

Deshalb fände ich es echt prima, wenn es in künftigen CloneDummy-Versionen möglich wäre, auch den "state" eines Devices an eine andere fhem-Instanz zu übergeben...

Bitte nur als Anregung verstehen!
Danke und Gruß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

volschin

Wenn Du bei Deiner Lösung ohne Readings bleiben willst, empfehle ich Dir den Verzicht auf cloneDummy und die in diesem Artikel beschriebene Lösung.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

RoBra81

Zitat von: Spartacus am 25 Januar 2015, 15:54:09
Wie bekomme ich die "1" bzw "0" nun in meinen CloneDummy übertragen? Wo muss das StateFormat jetzt angewendet werden. Ich habe es so verstanden:
Rpi1:
define state.NRW.Ferientag.dum dummy
webcmd state.NRW.Ferientag.dum 0:1


Rpi2:
define Rpi1 FHEM2FHEM 192.168.x.x:7072 LOG:.*Ferientag.dum
define FerienTagAufPi2.cdm cloneDummy state.NRW.Ferientag.dum
attr FerienTagAufPi2.cdm stateFormat state.NRW.Ferientag.dum


Ist zwar etwas um die Ecke, aber probier mal das:

Rpi1:
define state.NRW.Ferientag.dum dummy
webcmd state.NRW.Ferientag.dum Feiertag  0:Feiertag  1


(wichtig: zwischen Feiertag und 0 bzw. 1 sind zwei Leerzeichen)
Rpi2:
define Rpi1 FHEM2FHEM 192.168.x.x:7072 LOG:.*Ferientag.dum
define FerienTagAufPi2.cdm cloneDummy state.NRW.Ferientag.dum
attr FerienTagAufPi2.cdm stateFormat Feiertag



Ronny

Spartacus

Hallo Ronny,
ich habe das mal probiert, aber das funzt nicht! Ich verstehe den Ansatz ehrlich gesagt auch gar nicht!
Ich habe Feiertag mal gegen Ferientag ersetzt, aber das kann es ja nicht sein!

Der Zustand auf rPi2 bleibt unverändert auf Ferientag, egal wie ich es auf rPi1 einstelle!
Im state des Dummy auf rPi1 steht Ferientag 1 bzw. Ferientag 0.

@volschin
danke, das werde ich mir mal ansehen. Auf Anhieb verstehe ich die Logik auch noch nicht...

Gruß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

RoBra81

Guten Morgen,

ich hatte es bei mir getestet: wenn ich im remote FHEM (bei dir rPi1) einem dummy ein Set mit mindestens zwei Wörtern gegeben habe, dann hat er beim ersten Wort den letzten Buchstaben abgeschnitten (daher die zwei Leerzeichen) und diesen Begriff als Reading im Dummy des Haupt-FHEM (bei dir rPi2) angelegt mit dem Wert, der als zweites Stand.

Also

set remotedummy geht doch

im remote FHEM gab ein Reading "geh" mit Wert "doch" im Haupt-FHEM. Und darauf könnte man dann mit stateFormat zugreifen. Hat er denn das Reading bei dir im rPi2 angelegt?

Ronny

Spartacus

Hallo,
ich habe das jetzt ganz simpel gelöst und hoffe, ich habe keinen Fehler in meiner Vorgehensweise:

rpi1:
hier wird das dummy-Device "state.NRW.Ferientag.dum" in Abhängigkeit vom NRW-Ferienkalender auf einen Wert (hier "0" oder "1") gesetzt.
im Dummy Device selber, habe ich folgendes Attribut gesetzt:
attr state.NRW.Ferientag.dum event-on-change-reading .*

rpi2:
Fhem2Fhem Verbidunganlegen:
define rpi1 FHEM2FHEM  192.168.x.x:7072 LOG:state.NRW.Ferientag.dum
ein weiteres Dummy-Device anlegen:
define Ferien dummy
und ein notify bauen:
define Datentransfer notify state.NRW.Ferientag.dum set Ferien %
Jetzt sollte der Wert in "state.NRW.Ferientag.dum" auf das Dummy-Device "Ferien" übertragen werden.

Wer eine einfachere Lösung kennt, bitte melden!

Christian

Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

HRueck

Hi Spartacus,
deine Lösung ist doch im Endeffekt auch nichts anderes als meine oben beschriebene DOIF Lösung, oder?

Gruss Herbert

Spartacus

Hi Herbert,
Ja, das stimmt! Zumindest verstehe ich Deine Lösung jetzt! Im Prinzip reagiert man auf Events, die über fhem2fhem weitergegeben werden..

Vielleicht ist Dein DOIF noch ein bissl eleganter, als meine Lösung

Gruß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R