Ich wollte den state "on" / "off" eines dummies von einem remote FHEM mittels cloneDummy auf meinem lokalen FHEM darstellen.
Zu sehen ist aber lediglich "defined" / "active".
Soweit ich recherchieren konnte, geht wohl bei F2F im Moment nicht mehr.
Ist das richtig oder mache ich etwas falsch?
Im ersten Fall: Ist beabsichtigt, die gewünschte Funktion in Zukunft zur Verfügung zu stellen?
Du musst dir das Stateformat selbst definieren, wenn Du ein anderes haben willst. Ist in der Doku beschrieben.
welche "Doku" meinst du?
ich habe mit dem bei cloneDummy angegebenen Attribut "addStateEvent" und mit [reading] im define rumexperimentiert, aber ohne Erfolg.
könntest Du bitte deinen Hinweis etwas präzisieren?
Die commandref!!!
http://fhem.de/commandref_DE.html#cloneDummy
Gruß Joachim
genauso hab ichs ja gemacht.
das problem liegt aber darin, dass FHEM2FHEM mir nur "state" mit "defined" bzw. "active" vom remote FHEM liefert!
Gruss Herbert
Zitatwenn stateFormat als attr gesetzt ist, toppt das alles
das Atribut funktioniert perfekt bei mir, man kann dir aber nicht helfen,
a) da du nichts von deinem Device sprich readings zeigst,
b) keiner weiß was STATE bei dir anzeigen soll
EDIT:on bzw off
Also:
- auf meinem remote FHEM gibt einen dummy der on und off als readings hat
- diesen dummy clone ich auf das lokale FHEM
remote:
define Feiertag dummy
attr Feiertag webCmd ja:nein
wird richtig angezeigt und lässt sich schalten
lokal:
define RasPi2Feiertag cloneDummy Feiertag
das Problem scheint mir dort zu liegen:
"Was kann das Modul nicht?
- Es kann keine get oder set Befehle an das Quelldevice senden, und z.B. Aktoren zu betätigen
- Es kann nicht erkennen, welches der Readings der State ist, als state wird vom Modul defined bzw. active gesetzt, wenn hier etwas anderes gewünscht wird, muss das über stateFormat eingebaut werden"
(Zitat aus orum.fhem.de/index.php?topic=21718.0)
wie ich stateFormat in meinem Fall "einbauen" soll ist mir als Newbie leider nicht klar
Dann nimm noch mal den Link zur Commandref und lies den Abschnitt zu stateformat. :o
habe nun wirklich die Doku durchgeackert.
bin aber leider auf keinen grünen Zweig gekommen, wie ich in meinem Fall das stateFormat definieren soll.
ich erwarte keine fertige Lösung von euch, aber bitte etwas mehr als nur die Aufforderung zum Lesen der Doku.
also, wer kann mir bitte zum richtigen Einstieg verhelfen?
Danke und Gruss, Herbert
Ich habe inzwischen eine Lösung für meine ANWENDUNG gefunden:
ich setze RasPi2Feiertag (lokal) mit einem DOIF auf den Wert von Feiertag (remote).
Eine Lösung meines ursprünglichen Ansatzes würde mich aber weiterhin interessieren, man will ja schliesslich dazulernen!
Wenn ich Deine Defines oben richtig interpretiere
attr RasPi2Feiertag stateformat Feiertag
ok, danke!
mit grossem F in stateformat (natürlich!) gehts.
wenn ich jetzt noch wüsste was stateFormat in dieser Form "macht", also die Logik dahinter, wäre ich voll zufrieden!
Gruss Herbert
Hallo,
verfolge den Thread gerade und versuche gerade etwas Ähnliches.
Auf dem RemoteSystem habe ich ein dummy "Ferientag". Dieses kann den Wert "0" und "1" annehmen.
Diese Werte stehen jeweils in STATE
Wenn ich das mittles F2F auf ein anderes System clonen will, nimmt mein cloneDummy auch nur die Werte "active" an.
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
Das funktioniert aber nicht.
Was habe ich da jetzt falsch verstanden?
Danke,
Christian
Hallo Spartacus,
unsere Problemstellung scheint inhaltlich und vom versuchten Lösungsansatz her identisch zu sein!
btw: der Vorschlag von volschin geht entgegen meiner vorschnellen Aussage doch nicht, es wird nur der Wert "Feiertag" angezeigt.
also ich bleibe mal vorerst bei meiner DOIF Lösung.
auf dem lokalen System wird remote wie folgt angezeigt:
define RasPi2Feiertag dummy
define SetRasPi2Feiertag DOIF ([Feiertag] =~ "ja") ({fhem("set RasPi2Feiertag ja")}) DOELSE ({fhem("set RasPi2Feiertag nein")})
trotzdem wäre es interessant, die Lösung mit cloneDummy zu finden
... im code hat noch das Attribut "do always" gefehlt.
Gruss Herbert
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
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
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
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
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.
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.
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
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
Wenn Du bei Deiner Lösung ohne Readings bleiben willst, empfehle ich Dir den Verzicht auf cloneDummy und die in diesem Artikel (http://www.meintechblog.de/2013/11/zwei-fhem-server-verbinden-fritzbox-anwesenheitserkennung-auf-dem-raspberry-pi-nutzen/) beschriebene Lösung.
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
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
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
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
Hi Spartacus,
deine Lösung ist doch im Endeffekt auch nichts anderes als meine oben beschriebene DOIF Lösung, oder?
Gruss Herbert
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
Ich bin immer wieder auf diesen Thread gestoßen, wenn ich nach cloneDummy gesucht habe. Ich hätte aber eine Lösung anzubieten:
Auf dem RemoteServer habe ich einen Bewegungsmelder:
defmod Bewegungsmelder IT 00010010110011100000000000 0 0001
attr Bewegungsmelder IODev nanoCUL
attr Bewegungsmelder event-on-change-reading .*
attr Bewegungsmelder userReadings onState { ReadingsVal("Bewegungsmelder","state",0)}
setstate Bewegungsmelder off
setstate Bewegungsmelder 2017-07-20 16:02:56 onState off
setstate Bewegungsmelder 2017-07-20 16:02:56 state off
Ich habe hier das userReading onState gesetzt.
Auf der Fhem-Hauptinstanz dann ein cloneDummy:
defmod cloneBewegungsmelder cloneDummy Bewegungsmelder
attr cloneBewegungsmelder stateFormat onState
setstate cloneBewegungsmelder off
setstate cloneBewegungsmelder 2017-07-20 16:02:56 onState off
setstate cloneBewegungsmelder 2017-07-20 16:02:56 state active
Und hier mit stateFormat onState ausgelesen. Das Reading onState wird dann automatisch angelegt. So funktioniert es prima.
Hi,
ich mache schon seit vielen Jahren mit FHEM rum und es gibt immer viele Wege die zum Ziel führen. Das macht FHEM am Ende ja auch aus. Um trotzdem die Komplexität etwas zu mindern sind Module, die oft benötigte Anforderungen bedienen, super. (z.B. LightScene) Ich bin allen Entwicklern mehr als dankbar, das sie Ihre Zeit in die Weiterentwicklung von FHEM investieren.
Mit cloneDummy habe ich mich auch schon oft abgemüht und es meist nicht eingesetzt, weil ich einen anderen Weg gefunden habe. Aktuell bin ich wieder darüber gestolpert, weil ich den state der Homebridge und alexabridge von einem 2. Raspi über F2F und cloneDummy auslesen wollte. Zurückblickend hatte ich fast immer die Anforderung den "state" zu clonen und bin aus den hier beschriebenen Gründen mit cloneDummy nie zum Ziel gekommen.
Um es gleich vorweg zu nehmen, ich kann nicht Programmieren und ich habe auch kein aktuelles Problem. Ich möchte an den Entwickler des Moduls, vermutlich Joachim, den Wunsch äußern, sich das Modul nochmal anzuschauen und evtl. auch das clonen des "state" einzubauen. Wie hier zu lesen ist, geht es ja doch irgendwie...
Wenn nicht ist auch ok. Es gibt ja funktionierende Wege.
Hi,
Du brauchst clonedummy nicht, ein normaler dummy reicht. FHEM2FHEM kannn seit kurzem auch den state übertragen.
Auszug aus der Doku
ZitataddStateEvent
falls gesetzt, werden state Events als solche uebertragen. Zu beachten: das Attribut ist nur für LOG-Mode relevant, beim Setzen wird eine zusätzliche reopened Logzeile generiert, und die andere Seite muss aktuell sein.
Gruß Otto