ReadingList bei nicht-dummy Devices (Readings von Devices mit "set" setzen)

Begonnen von Mathea, 06 Januar 2017, 10:39:56

Vorheriges Thema - Nächstes Thema

Mathea

Hallo,

gibt es eine Möglichkeit, Readings bei nicht-dummy Devices direkt über einen set Befehl zu schalten? Bei dummies funktioniert das mit dem ReadingList Attribut, aber bei allen anderen Devices finde ich keine Lösung dafür.

Mein eigentliches Problem:
Ich möchte mit Alexa über das Brightness-homebridgemapping nicht state schalten, sondern ein custom Reading namens "StateAlexa".

Mein aktuelles homebridgeMapping bei einem ReadingsProxy sieht so aus:

attr WZ_DVD_Regal_Beleuchtung_MySensors homebridgeMapping Brightness=StateAlexa On=StateAlexa,cmdOn=on,cmdOff=off

Wenn ich allerdings Alexa sage, dass sie das Gerät auf einen Prozentwert setzen soll steht im state lediglich "undefined". Bei einem EIN- oder AUS-Schaltbefehl wird dies auch direkt an "state" übertragen und nicht an das "StateAlexa" Reading. Meine Theorie ist es, dass ich "StateAlexa" nicht über einen "set WZ_DVD_Regal_Beleuchtung_MySensors StateAlexa on" setzen kann weil ich in den Attributen StateAlexa nicht als ReadingList eintragen kann.

Gibt es hierfür eine Lösung?

Vielen Dank,
Mathea

Otto123

Hallo Mathea,

ich habe Dein Problem nicht verstanden, aber suchst Du setreading?

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

Esjay

Zitat von: Mathea am 06 Januar 2017, 10:39:56
Hallo,

gibt es eine Möglichkeit, Readings bei nicht-dummy Devices direkt über einen set Befehl zu schalten? Bei dummies funktioniert das mit dem ReadingList Attribut, aber bei allen anderen Devices finde ich keine Lösung dafür.

Mein eigentliches Problem:
Ich möchte mit Alexa über das Brightness-homebridgemapping nicht state schalten, sondern ein custom Reading namens "StateAlexa".

Mein aktuelles homebridgeMapping bei einem ReadingsProxy sieht so aus:

attr WZ_DVD_Regal_Beleuchtung_MySensors homebridgeMapping Brightness=StateAlexa On=StateAlexa,cmdOn=on,cmdOff=off

Wenn ich allerdings Alexa sage, dass sie das Gerät auf einen Prozentwert setzen soll steht im state lediglich "undefined". Bei einem EIN- oder AUS-Schaltbefehl wird dies auch direkt an "state" übertragen und nicht an das "StateAlexa" Reading. Meine Theorie ist es, dass ich "StateAlexa" nicht über einen "set WZ_DVD_Regal_Beleuchtung_MySensors StateAlexa on" setzen kann weil ich in den Attributen StateAlexa nicht als ReadingList eintragen kann.

Gibt es hierfür eine Lösung?

Vielen Dank,
Mathea

Hallo Mathea
Ich habe keine direkte Antwort auf deine Frage, aber vll helfen dir meine Beiträge hier -->https://forum.fhem.de/index.php/topic,60244.0.html auf Seite 83/84 weiter. 

Gruß Stephan

Mathea

Zitat von: Otto123 am 06 Januar 2017, 10:51:06
Hallo Mathea,

ich habe Dein Problem nicht verstanden, aber suchst Du setreading?

Gruß Otto

Hi Otto,

mein Problem ist, dass ich Alexa über das homebridgeMapping vermitteln möchte, dass sie ein bestimmtes Reading eines Gerätes und nicht "state" schalten soll. Dies bekomme ich nicht hin. Mein Verständnis ist es, dass das Problem daran liegt, dass Alexa einen "set" Befehl absetzt, dieser set Befehl aber nicht einfach so jedes Reading setzen kann. Mit setreading funktioniert das natürlich. Das kann ich allerdings im homebridgeMapping nicht definieren.
Nun wäre mein Lösungsansatz, so etwas wie "readingList" für das Gerät zu definieren, das ich schalten möchte, damit ich das Reading direkt mit einem "set" Befehl setzen kann und nicht setreading benötigt. Mit dummies funktioniert das so doch, oder?

Warum ich das überhaupt machen möchte kann man hier vielleicht etwas rauslesen: https://forum.fhem.de/index.php/topic,60244.msg553862.html#msg553862
Ich möchte eine Möglichkeit haben, zu unterscheiden, ob ein Gerät gerade durch einen manuellen Schaltbefehl manipuliert wurde oder ob meine Lichtautomatik das Gerät gesteuert hat. Bei einem manuellen "overwrite" möchte ich dementsprechend meine Lichtautomatik abschalten, damit der manuell gesetzte Zustand nicht wieder von meiner Automatik überschrieben wird.

Gruß,
Martin

Mathea

Zitat von: Esjay am 06 Januar 2017, 13:53:19
Hallo Mathea
Ich habe keine direkte Antwort auf deine Frage, aber vll helfen dir meine Beiträge hier -->https://forum.fhem.de/index.php/topic,60244.0.html auf Seite 83/84 weiter. 

Gruß Stephan

Hi Stephan,

leider kann mir deine Lösung in meinem Fall nicht helfen :/ Ich möchte nämlich in the first place verhindern, dass Alexa überhaupt "state" schaltet. Dieses Event kann ich in fhem nämlich nicht von einem Schaltbefehl meiner Automatik-DOIF Funktionen unterscheiden.

Mein Ziel ist es, dass Alexa direkt ein anderes Reading schaltet, damit ich dies gezielt in einem DOIF abfangen kann. In dem Fall weiß ich dann, dass ich gerade manuell das Licht geändert habe und kann dementsprechend meine Lichtautomatik-DOIF Funktion abschalten.

Gruß,
Mathea

DeeSPe

Zitat von: Mathea am 06 Januar 2017, 14:21:39
Hi Stephan,

leider kann mir deine Lösung in meinem Fall nicht helfen :/ Ich möchte nämlich in the first place verhindern, dass Alexa überhaupt "state" schaltet. Dieses Event kann ich in fhem nämlich nicht von einem Schaltbefehl meiner Automatik-DOIF Funktionen unterscheiden.

Mein Ziel ist es, dass Alexa direkt ein anderes Reading schaltet, damit ich dies gezielt in einem DOIF abfangen kann. In dem Fall weiß ich dann, dass ich gerade manuell das Licht geändert habe und kann dementsprechend meine Lichtautomatik-DOIF Funktion abschalten.

Gruß,
Mathea

Ich würde evtl. zwei dummy(s) mit angeschlossenen notify(s)/DOIF(s) einrichten!?
Diesen könntest Du die selben set Befehle beibringen wie dem originalen Device.
Den einen dummy nutzt Du zum Schalten mit Siri/Alexa und dieser setzt dann noch ein Reading z.B. "setreading <ORIGINAL-DEVICE> automatik 1".
Den anderen dummy benutzt Du statt dem Original-Device zum manuellen Schalten und setzt das Reading automatik wieder auf 0.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

justme1968

schau dir das readinglist attribut an. und/oder cmdalias. wenn du dir nur einen wert merken willst schreib ihn lieber direkt ins device statt in extra dummys. dabei hilft dir cmdalias und setreading.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mathea

Zitat von: justme1968 am 06 Januar 2017, 20:45:50
schau dir das readinglist attribut an. und/oder cmdalias. wenn du dir nur einen wert merken willst schreib ihn lieber direkt ins device statt in extra dummys. dabei hilft dir cmdalias und setreading.

Hallo justme1968,

für nicht-dummy Devices existiert das attribut readingList leider nicht.

Könntest du mir noch ein wenig auf die Sprünge helfen wie man cmdalias mit dem homebridgeMapping verkuppelt?

ein beispielhaftes homebridgeMapping eines devices sieht bei mir so aus (mit dem Ziel, dass Alexa nicht "state" sondern "StateAlexa" setzt):

attr WZ_DVD_Regal_Beleuchtung_MySensors homebridgeMapping Brightness=StateAlexa On=StateAlexa,cmdOn=on,cmdOff=off

Ich hätte mit cmdalias jetzt sowas ausprobiert, aber es scheints nichts zu tun:

define AlexaReadingMapping cmdalias set WZ_DVD_Regal_Beleuchtung_MySensors:StateAlexa AS setreading WZ_DVD_Regal_Beleuchtung_MySensors StateAlexa

Ellert

Zitatfür nicht-dummy Devices existiert das attribut readingList leider nicht.

Das ist nicht ganz richtig, DOIF hat readingList und setList Attribute. Von daher kannst Du DOIF als Dummy-Ersatz nutzen und hast gleichzeitig die Möglichkeit die DOIF Readings zu verknüpfen, ähnlich wie DeeSPe vorgeschlagen hat..

Mathea

Zitat von: Ellert am 07 Januar 2017, 13:39:55
Das ist nicht ganz richtig, DOIF hat readingList und setList Attribute. Von daher kannst Du DOIF als Dummy-Ersatz nutzen und hast gleichzeitig die Möglichkeit die DOIF Readings zu verknüpfen, ähnlich wie DeeSPe vorgeschlagen hat..

Ich habe gehofft, dass ich verhindern kann für jedes Gerät, das ich mit Alexa steuern möchte zusätzlich noch einen dummy oder eine DOIF Funktion anzulegen. Aber ich denke, ich werde da nicht herum kommen :/

justme1968

such mal im alexa oder homebridge thread. da gibt es ein beispiel wie man mit cmdalias ein neues kommando definiert das man dann im mapping zum schalten verwendet.

für alexa kannst du auch das active internal auswerten.

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

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

Bastian0302

Guten Abend.
Habe im Prinzip das selbe Problem wie mein Vorredner.

ich brauche bei dem Modul "PID20" (device name Hz_Regelung_Wohnzimmer) ein zusätzliches reading.
Ich möchte in der Tabletui zwischen automatik und manuell schalten können und dazu brauche ich ein zusätzliches reading welches ich im "thermostat" widget benutze um "data-lock" zu setzen.
Das funktioniert mit dem befehl "setreading" ganz gut.
<div class="large top-space" data-type="thermostat" data-lock="Auto" data-device="Hz_Regelung_Wohnzimmer" data-get="desired" data-set="desired" data-temp="measured" data-mode="Modus" data-min="15" data-max="30" data-step="0.5"></div>
<div data-type="switch"  data-cmd="setreading" data-device="Hz_Regelung_Wohnzimmer" data-set="Auto" data-get="Auto" data-set-on="1" data-set-off="0" data-get-on="1" data-get-off="0" data-on-color="#F7FE2E" data-icon="mi-check"></div>   


Nun zum Knackpunkt. Wenn ich "Auto" auf 1 schalte soll ein Notify reagieren und die "desired temp" auf einen Wert setzen.
Beispiel hab ich hier raus.
https://wiki.fhem.de/wiki/FHT_8v_direkt_ansprechen

Nun reagiert das notify ja nicht auf ein reading welches mittels "setreading" gesetzt wurde.

Ich habe auch versucht über "userattr" das "readingList" Attribut einzufügen. Das geht hat aber hat keinen erfolg gebracht, da es ja anscheinend bei nicht Dummy Devices nicht geht.
Besteht die Möglichkeit bei den Modulen ein oder mehrere readings hinzuzufügen ohne gleich das Modul umschreiben zu müssen oder extra Dummys erstellen zu müsse??

Bin für jede Hilfe offen.
Danke schon einmal im Voraus.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

justme1968

natürlich reagiert ein notify auch auf readings dir mit setreading gesetzt werden. die regex im notify muss stimmen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Otto123

Zitat von: Bastian0302 am 22 Juni 2017, 18:09:15
Nun reagiert das notify ja nicht auf ein reading welches mittels "setreading" gesetzt wurde.
Ich dachte nur setstate erzeugt keine ->
Zitatsetstate

setstate <devspec> <value>

Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist maßgebend für die Status-Anzeige in diversen Frontends. Dieser Befehl wird auch im statefile benutzt.
Aber habe es gerade probiert, setreading erzeugt bei mir auch keine.  ???
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

justme1968

dann musst du schauen ob das reading durch eine event-on oder ein anderes attribut unterdrückt wird.

setreading verwendet intern den gleichen mechanismus den module verwenden um readings zu erzeugen. und erzeugt die gleichen events.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Otto123

Ja ok, mein Versuch vorhin war auf einem Device mit event-on-change-reading state - ich habe aber ein anderes reading gesetzt!
Jetzt nochmal einfach mit einem dummy ohne jegliches event-on-change-reading - da geht es.

Edit: Gegencheck sobald man  event-on-change-reading state setzt geht es nicht mehr!   :-[
Sobald irgendein event-on-change-reading  wirft ein setreading kein event mehr - Bug oder Feature?
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

justme1968

natürlich nicht. schau noch mal genau in die commandref. alle readings für die die event-on-change regex nicht greift werden komplett ignoriert. solange es nicht durch ein anderes event-on- attribut übersteuert wird.

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

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

Otto123

Du hast ja so Recht!
Zitatevent-on-update-reading
Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
Feature! 8)
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

Bastian0302

Das modul benutzt das
attr PID.FUBO event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.2,desired,measured:0.2,p_d:0.1,p_i:1.0,p_p:1.0
Hab die Attribute laut der Beispiel Konfiguration gesetzt.
https://wiki.fhem.de/wiki/PID20_-_Der_PID-Regler

Werde es morgen noch Mal ausprobieren.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

Otto123

Zitat von: Bastian0302 am 22 Juni 2017, 18:09:15
Ich möchte in der Tabletui zwischen automatik und manuell schalten können und dazu brauche ich ein zusätzliches reading welches ich im "thermostat" widget benutze um "data-lock" zu setzen.
Besteht die Möglichkeit bei den Modulen ein oder mehrere readings hinzuzufügen ohne gleich das Modul umschreiben zu müssen oder extra Dummys erstellen zu müsse??
Moin,

zu deiner eigentlichen Frage: Ich kenne mich mit Tabletui gar nicht aus, aber Du sagst Du brauchst ein zusätzliches reading.
Hast Du Dir userReadings mal angeschaut? Ist das keine Lösung für Dich?

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

Bastian0302

ich hab es jetzt hinbekommen.

Lösung:
Der PID20 hat das Attr event-on-change  reading. Dort habe ich das reading welches ich durch den befehl "setreading" in der tabletui setze eingefügt. Nun reagiert auch das notify.


Zu dem userreading: Das hatte ich auch probiert. Hab dadurch das notify triggern lassen. Nur hat es nicht so funktioniert wie ich wollte.

Danke für die Hilfe. :)
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos