Reading als State an dummy übergeben

Begonnen von sonofagun, 19 November 2014, 19:06:18

Vorheriges Thema - Nächstes Thema

sonofagun

Grüß euch,

ich bin neu im Forum und versuche gerade meine Heimsteuerung mit RPi und CUL zu erledigen. Soweit schaut es gar nicht so schlecht aus. Ich hoffe, nur da ich neu bin, wird mir jetzt nicht gleich unterstellt zu faul zum Suchen zu sein, da es meine Antwort womöglich irgendwo im Forum schon gibt. Ich habe zwei Tage nach Dienst bis in die Nacht investiert um ein sehr einfaches Problem zu lösen und wurde leider wirklich nicht fündig.

Mein HM-Wandthermostat (0_wo_wz0_the00_Weather) hat zwei Readings (temperature/humidity)  und ich möchte diese jeweils einem Dummy übergeben. Einer könnte so aussehen:

define 0_wo_wz0_the00_Weather_dummy dummy
set 0_wo_wz0_the00_Weather_dummy ReadingVal("0_wo_wz0_the00_Weather";"temperature";"?")

Klappt natürlich nicht. Dient nur zum veranschaulichen.

Ich habe im Forum die Variante gelesen, das Reading über Pearl auszulesen, als Variable abzuspeichern und dann den Dummy damit zu setzen. Ich hoffe ihr wisst da eine einfachere/schönere Lösung.

Toll wäre das Reading nicht als Reading im Dummy zu setzen, sondern als State. Ich weiß aber nicht ob es dann regelmäßig aktualisiert werden würde.

Danke für die Hilfe.



Puschel74

Hallo,

der nächste der ein Reading in einen Dummy kopieren will.
Wäre mal einer so nett und könnte mir erklären wozu das gut sein soll?
Doppelte Lagerhaltung macht ja auch niemand.

Zitatda es meine Antwort womöglich irgendwo im Forum schon gibt.
Naja, nicht irgendwo sondern genau mit dem Suchbegriff - Reading in Dummy kopieren  ;)

Aber ok.
Das define des Dummy ist gewöhnungsbedürftig aber das kann jeder selbst entscheiden.
Ein set hat in der Konfig NICHTS zu suchen.
Weiters sollte auch nicht die fhem.cfg DIREKT bearbeitet werden - aber auch dazu gibt es schon mehr als genug Beiträge.

Du brauchst ein notify (oder DOIF) auf das Reading des Device:
define wert_in_dummy_kopieren notify 0_wo_wz0_the00_Weather:(temperature|humidity).* {
  fhem("setreading 0_wo_wz0_the00_Weather_dummy $EVENT");
}

Mit stateFormat kansnt du auch den state so formatieren wie du es möchtest.
Auch dafür gibt es genug Beispiele - aber hier eins von mir:
attr DG_Badezimmer stateFormat {sprintf("T: %.1f °C <br>H: %.1f %%",ReadingsVal("DG_Badezimmer","temperature",0), ReadingsVal("DG_Badezimmer","humidity",0))
Das sieht dann so aus wie im Screenshot.

Grüße

P.S.: Code ist ungetest und ohne Gewähr
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sonofagun

Ich würde Lügen wenn ich mit Sicherheit sagen könnte, auch dieses Posting "Reading in Dummy kopieren" gelesen zu haben, aber alles wo "notify" vorkam, beachtete ich nicht, da ich dachte dass es die falsche Funktion für meine Anwendung ist. Aus dem Glauben heraus: "Was wenn sich die Temp nie ändert, dann springt das doch nicht an."
Ist ein Laiengedanke, aber so versucht man sich als Anfänger die Welt zusammenzureimen.

define 0_wo_wz0_tmp00 dummy
define 0_wo_wz0_the00_ntf00 notify 0_wo_wz0_the00_Weather:(temperature).* {
  fhem("setreading 0_wo_wz0_tmp00 $EVENT");
}

ergibt:

Unknown command fhem("setreading, try help. Unknown command }, try help.

Damit ichs auch verstehe: Notify lauscht den 0_wo_wz0_the00_Weather am Reading temperature . Bei einer Temperaturveränderung setzt er das Reading im Dummy mit dem "Wert=$Event" den es erlauscht hat? Mein Dummy hätte dann das Reading temperature mit dem Wert $EVENT, das der Temperatur entspricht. Wird dem Dummy per setreading auch der name des readings mitübergeben? Scheint zumindestens so.

P:S: Set war echt dämlich, acuh für nen Anfänger, aber ich suche wirklich schon so lange nach ner Lösung und habe mich irgendwie geistig festgebissen...

Puschel74

Hallo,

::)

Ich hab vergessen zu erwähnen das meine Codes direkt in der fhem.cfg aus alle Fälle in Fehlermeldungen enden.
Da ich meine fhem.cfg schon langeeeee nichtmehr direkt bearbeite gehe ich davon aus das auch Anfänger diese Hinweise
ZitatWeiters sollte auch nicht die fhem.cfg DIREKT bearbeitet werden - aber auch dazu gibt es schon mehr als genug Beiträge.
beherzigen und nach meinen Beiträgen mit dem Suchtext fhem.cfg bearbeiten suchen und das umsetzen.
Für alles andere ist der User (Anfänger) selbst verantwortlich.

define wert_in_dummy_kopieren notify 0_wo_wz0_the00_Weather:(temperature|humidity).* {}
in die Befehlszeile eingeben (das fehlerhafte notify vorher mit delete <name> löschen - über die Befehlszeile)
und dann das DEF bearbeiten und den restlichen Code einfügen das es so aussieht:
0_wo_wz0_the00_Weather:(temperature|humidity).* {
  fhem("setreading 0_wo_wz0_the00_Weather_dummy $EVENT");
}


Zitataber alles wo "notify" vorkam, beachtete ich nicht,
Also auch die commandref dazu nicht  ???
Das ist ein Fehler.

ZitatAus dem Glauben heraus: "Was wenn sich die Temp nie ändert, dann springt das doch nicht an."
Tja, Glauben und Wissen sind 2 Paar Schuhe oder wie man bei uns sagt:
Was ist beim k(g)lauben das höchste - der Hintern.

ZitatMein Dummy hätte dann das Reading temperature mit dem Wert $EVENT, das der Temperatur entspricht. Wird dem Dummy per setreading auch der name des readings mitübergeben? Scheint zumindestens so.
In $EVENT müsste theoretisch temperature xx.xx °C stehen und das wird per setreading (siehe commandref) in den Dummy geschrieben.

Ja, es tut mir leid.
Aber es steht bereits alles hier im Forum - es muss nur gesucht und gelesen werden.
Auch wir werden mal müde und haben dann nur noch bedingt Lust alles zum drölfzigsten mal zu erklären.

Grüße

P.S.: Das Einsteiger.pdf und die angepinnten Beiträge hier sollte nauch hin und wieder mal gelesen werden  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sonofagun

Um uns beiden noch mehr Zeit zu ersparen, vor allem dir, ich lese ja eh die ganze Zeit schon und versuche zu lernen. Möchte ich dir genau diesen Satz mitteilen: Ich lese die ganze Zeit schon, Täglich von 18:00Uhr bis 01:00Uhr morgens. Seit 9 Tagen (bin im Ausland beruflich und habe vom Hotel aus wenig Möglichkeiten). Und wenn du wüsstest wie wenig Code mir bisher gelungen ist und was ich nicht schon alles gelesen habe, würdest du anders denken. Vielleicht kapier ichs nicht und whs bin ich schon übermüdet, aber ich schwöre dir eines: Ich suche und lese mich anscheinend schon zum Trottel.
Nach dem 7ten Tag habe ich mich erst an dieses Forum gewandt und ich verstehe absolut, dass es mühsam ist, jeden der anfängt bei der Hand zu nehmen. Ich danke dir für die Hilfe und werde mich erst wieder an dieses Forum wenden wenn es komplexer wird.
Ich hoffe, dass ich alleine so weit komme und bin bei Gott nicht beleidigt. Ein gewisses Knowhow wird berechtigterweise aus dem Selbststudium heraus erwartet und dieses habe ich noch nicht. Ich melde mich wieder wenn ich soweit bin. Und jetzt drück mir die Daumen dass ich zumindestens deinen letzten Beitrag nach 3maligem lesen in meine cfg bekomme.

Puschel74

#5
Hallo,

ok, aber so schwer hab ich das doch nicht beschrieben  ???

Nur diesen einen Satz von dir
ZitatAus dem Glauben heraus: "Was wenn sich die Temp nie ändert, dann springt das doch nicht an."
hab ich falsch gelesen.
Es stimmt, und hier hast du Recht, wenn sich die Temperatur nie ändert wird auch das notify nie getriggert.
Mir ist aber noch nicht untergekommen das sich eine Temperatur nie ändert.

Grüße

P.S.: Alles was ich dir im letzten Beitrag beschrieben habe mache ich grundsätzlich über die Befehlszeile von FHEM - siehe Screenshot

Edith: ich habe kein Problem damit einem Anfänger zu helfen, ich weiß nur nicht wo ich dich abholen soll - sprich, was weisst du und wo tust du dir schwer.
Bei konkreten Fragen gibt es konkrete Anworten und Hilfe.
Allgemeine Fragen werden auch nur allgemein beantwortet.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

pcbastler

Ich hänge mich mal hier dran, weil ich mit einer ähnlichen Abfrage ein kleines Problem habe.
Um mich in die Materie einzuarbeiten habe ich mit der vorhandenen Hardware angefangen. FHEM läuft auf einer virtuellen Debian-Maschine und soll erstmal die Fritzbox steuern.
Mit

attr stateformat {sprintf("IP: %s  <br>Last: %.1f %%",ReadingsVal("FritzBox","box_ipExtern",0), ReadingsVal("FritzBox","box_powerRate",0))}

wollte ich mir externe IP und CPU-Last anzeigen lassen, das klappt auch einmal (Screenshot anbei). Nach dem Wechsel der Ansicht steht dort nur noch Check APIs.
Wo steckt mein Fehler?

PASC

Hallo zusammen,

ich weiß nicht, wie aktuell dieses Thema noch ist, aber der Beitrag hat mir zumindest zum Teil geholfen, meine Herausforderung zu lösen. :)
Ich habe eine Steckdose (ZWave Fibaro Wallplug), deren Verbrauchswerte ich in einem Dummy mit stateformat anzeigen möchte.
Da ich als iPhone-App "FHEM Control" nutze, fallen ReadingsGroup aus und auch das Device direkt mit stateFormat zu formatieren funktioniert nicht, da ZWave-Devices kein setList kennen und es somit in der App nicht mehr klickbar ist.

So habe ich mir einen Dummy erzeugt, der mit userReadings und stateFormat eine einfache Anzeige ermöglicht. Hier der Code:

# Anzeige der Verbrauchsdaten in einem Dummy, damit dieser auch in FHEM Control zu sehen ist
define AZ.Stehlampe.Werte dummy
attr AZ.Stehlampe.Werte alias Stehlampe Werte
attr AZ.Stehlampe.Werte group Licht
attr AZ.Stehlampe.Werte icon measure_power_meter
attr AZ.Stehlampe.Werte room Arbeitszimmer
attr AZ.Stehlampe.Werte stateFormat Verbrauch: energy Leistung: power
attr AZ.Stehlampe.Werte userReadings energy { ReadingsVal("AZ.Stehlampe","energy",0);;;; }, power { ReadingsVal("AZ.Stehlampe","power",0);;;; }
define di.SET.AZ.Stehlampe.Werte DOIF ([AZ.Stehlampe]) (set AZ.Stehlampe.Werte Werte)
attr di.SET.AZ.Stehlampe.Werte do always
attr di.SET.AZ.Stehlampe.Werte room FHEM


Der set-Befehl bei DOIF dient nur zum Triggern und hat keine echte Relevanz.

Eine andere Lösung ist mir nicht eingefallen, für elegantere Lösungen bin ich offen.  ;)

d0m2011

Hallo zusammen,

ich habe vor Kurzem ein notify mit folgendem Inhalt geschrieben:
Maintemp:(Wassertemp).* {fhem("set Wassertemp_dummy $EVENT");}

Damit übergebe ich ein Reading an einen Dummy.
Leider lautet der Status dann folgendermaßen, z. B.: Wassertemp: 11,4

Wie schaffe ich es, nur den Wert zu übergeben? Ohne dem Reading-Namen (Wassertemp) selbst?

MadMax-FHEM

Zitat von: d0m2011 am 29 April 2017, 19:45:23
Hallo zusammen,

ich habe vor Kurzem ein notify mit folgendem Inhalt geschrieben:
Maintemp:(Wassertemp).* {fhem("set Wassertemp_dummy $EVENT");}

Damit übergebe ich ein Reading an einen Dummy.
Leider lautet der Status dann folgendermaßen, z. B.: Wassertemp: 11,4

Wie schaffe ich es, nur den Wert zu übergeben? Ohne dem Reading-Namen (Wassertemp) selbst?

Probiere mal statt $EVENT $EVTPART1

EDIT: aber auch hier die Frage: wozu denn Werte die schon irgendwo da sind in einem Dummy nochmal?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

d0m2011

Hi Joachim,

so funktioniert es, danke.
Der Grund ist folgender:
Ich habe mit ein schickes Tablet UI gebaut. Leider schaffe ich es nicht den Wert des Readings darzustellen.
Allerdings funktioniert es, wenn ich den State (in diesem Fall vom Dummy) auslese.
Im Endeffekt eine Notlösung :(

MadMax-FHEM

Aha, gut Tablet-UI hab/nutze ich nicht, daher kann ich dir für die Notlösung keine Lösung nennen...
...für das andere: bitte gerne! ;)

Viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Peter 72336

Wenn du ein bestimmtes Reading aus einem Gerät darstellen möchtest versuche es mit data-get="*****"

Ich habe bei meinem TabletUi ein Fenster Symbol

data-type="symbol"
data-device="dein Geräte Name"
data-get="dein Reading"

Littlesteve

servus, ich versuche immer noch verzweifelt die Temperatur aus meiner Netatmo Station in einen dummy zu übergeben damit ich den wert über die homebridge dann auch am iphone anzeigen lassen kann, dazu würde ich gerne das Temperatur reading an meinen dafür angelegten dummy übergeben aber irgendwie klappt das nicht, kann mir jemand sagen was falsch ist?

Name dummy: Wohnzimmer.temp
Name netatmo station: netatmo_D70_ee_50_22_ec_c2

habe dazu folgendes notify angelegt mit folgender DEF:

netatmo_D70_ee_50_22_ec_c2:(temperature).* {fhem("setreading Wohnzimmer.temp $EVENT");}

aber es wird einfach kein reading in den Wohnzimmer.temp dummy geschrieben... bin am verzweifeln...  :o :o

MadMax-FHEM

Die Klammern um "temperature" sind unnötig (oder sogar falsch)...

Am einfachsten: Eventmonitor öffnen (Filter auf das Netatmo setzen), warten bis der gewünschte Temperatur-Event kommt, Zeile markieren und auf Create/Modify.

Dann hast du schon mal ein Notify was auslösen sollte.

Ob dann im setreading Befehl $EVENT oder ein $EVTPART benötigt wird siehst du dann...

Namen von Geräten mit "Punkt" sind nicht schlau, der Punkt hat bei RegEx eine Bedeutung...
(hat aber wohl nichts mit dem Problem zu tun)

Kurz, da nur Handy...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)