userreading anlegen

Begonnen von Tommy82, 28 April 2019, 20:51:46

Vorheriges Thema - Nächstes Thema

Tommy82

Hallo,
ich brauche ein userreding, allerdings steh ich mir dazu voll auf dem schlauch wie ich das umsetzen kann.

Ich brauche ein reading welches mir in meinem Device "Kameras" ein reading mit true oder false befüllt wenn sich der Wert des vorhanden readings "alertID" ändert

Wie kann ich das umsetzen?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

MadMax-FHEM

Attribut oldreadings auf alertID setzen.
Userreadings dann in etwa so:

userreadings Kameras truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}

Also nicht wirklich getestet, mehr als Idee zum besser machen ;)

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)

Otto123

#2
Hi,

Idee :
attr Kameras userReadings change:alertID.* {"true"}

false müsstest Du dann selbst setzen, ich nehme an Du wolltest nicht toggeln.

@Joachim: Die Idee hatte ich auch. Aber wenn sich alertID ändert - dann muss doch OldReadingsVal anders sein?

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

MadMax-FHEM

Zitat von: Otto123 am 28 April 2019, 21:28:53
@Joachim: Die Idee hatte ich auch. Aber wenn sich alertID ändert - dann muss doch OldReadingsVal anders sein?

Verstehe nicht genau was du meinst!?

Attr Kameras oldreadings alertID

Wen sich die ändert, dann sollte doch per OldreadingsVal der alte Wert stehen oder?
Irgendwo habe ich genau eine Anwendung von oldreadings...
...müsste mal nachsehen wo wie und so...

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)

Otto123

Ja so meine ich das. Also braucht man doch bloß auf alertID zu triggern? Es sein denn die wird auch mit gleichen Werten überschrieben... Das könnte man mit event-on-change-reading abfangen.
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

DS_Starter

#5
Ich könnte noch dies beisteuern:


attr Kameras userReadings toggle { if(ReadingsVal($name,"alertID","false") eq "true") {"false"} else {"true"} }


So ähnlich erzeuge ich einen heartbeat mit AT:


defmod heartbeat at +*00:01:00 {qx(touch /opt/fhem.heartbeat)}
attr heartbeat DbLogExclude state
attr heartbeat comment Touch einer Datei für die Verwendung durch Watchdog an. \
Das Reading "touch" wird bei jedem Zyklus alternierend auf 0 bzw. 1 gesetzt zum Logging und Darstellung in SVG.
attr heartbeat disable 0
attr heartbeat icon clock
attr heartbeat room Dienste->Monitoring
attr heartbeat userReadings touch { if(ReadingsVal($name,"touch",0) == 0) {1} else {0} }


Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

MadMax-FHEM

Zitat von: Otto123 am 28 April 2019, 21:51:30
Ja so meine ich das. Also braucht man doch bloß auf alertID zu triggern? Es sein denn die wird auch mit gleichen Werten überschrieben... Das könnte man mit event-on-change-reading abfangen.

Da hast du nat. recht... ;)

Aber muss sich halt Tommy82 raussuchen was ihm am besten gefällt ;)

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)

Tommy82

Zitat von: MadMax-FHEM am 28 April 2019, 21:19:41
Attribut oldreadings auf alertID setzen.
Userreadings dann in etwa so:

userreadings Kameras truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}

Also nicht wirklich getestet, mehr als Idee zum besser machen ;)

Gruß, Joachim

Hi,
also wenn ich das jetzt mal versuchen würde, in welchem reading würden dann jetzt die werte true und false stehen, damit ich sie auswerten kann?
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

MadMax-FHEM

Es muss vermutlich (hab aber nach der Zeit nimmer so genau im Kopf) so heißen:


attr Kameras userreadings truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}


Das Reading mit true oder false heißt dann truefalse... ;)

Nachzulesen bei userreadings in der commandref ;)

Aber wie Otto schon geschrieben hat reicht wohl mittels event-on-change-reading zu erreichen, dass alertID nur einen Event bei Änderung erzeugt und somit dann true/false...

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)

Tommy82

Zitat von: MadMax-FHEM am 11 September 2019, 21:17:18
Es muss vermutlich (hab aber nach der Zeit nimmer so genau im Kopf) so heißen:


attr Kameras userreadings truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}


Das Reading mit true oder false heißt dann truefalse... ;)

Nachzulesen bei userreadings in der commandref ;)

Aber wie Otto schon geschrieben hat reicht wohl mittels event-on-change-reading zu erreichen, dass alertID nur einen Event bei Änderung erzeugt und somit dann true/false...

Gruß, Joachim

Nach solanger Zeit, da hast wohl recht, die liebe Zeit.
Also damit bekomme ich zwar das reading, allerdings gefüllt mit diesem hier
Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 1953) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 1953) line 1.
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

MadMax-FHEM

#10
Dann vielleicht:

return "true" bzw. return "false" (also als String)

Wie geschrieben: nicht getestet und nicht für copy/paste... ;)

Ich weiß ja nicht was genau du jeweils zurück haben willst...
...einfach mal bissi probieren...

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)

Otto123

Versuch doch mal die Form:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
oder
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}

geht auch prima in der FHEM Kommandozeile zum Test :)
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

Tommy82

Zitat von: Otto123 am 11 September 2019, 21:50:10
Versuch doch mal die Form:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
oder
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}

geht auch prima in der FHEM Kommandozeile zum Test :)

Hi,
leider führt auch das
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0} im Log zu einem:
2019.09.12 20:36:02.565 1: Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 122300) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 122300) line 1.


Wenn ich das in die FHEM Kommandozeile eingebe, stürzt Fhem komplett ab und startet neu.
Dann gibts im Log diese Meldung
Unmatched ( in regex; marked by <-- HERE in m/ userReadings{( <-- HERE ReadingsVal("Kameras","alertID","neu")[ :;]/ at fhem.pl line 2887.

Das hier nimmt er in der Fhem Kommandozeile ohne Probleme:
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}

Jetzt kann ich aber erst Morgen früh testen ob es funktioniert wie es soll.

Danke aber schonmal bis hier hin für die Hilfe
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Otto123

Zitat von: Tommy82 am 12 September 2019, 20:48:58
Hi,
leider führt auch das
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0} im Log zu einem:
2019.09.12 20:36:02.565 1: Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 122300) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 122300) line 1.

Tut mir ja leid das es so ein Chaos ausrichtet, aber in der Codezeile oben kommt "true" und "false" gar nicht vor?!
Bist Du sicher das die Fehlermeldung damit zu tun hat?

ZitatWenn ich das in die FHEM Kommandozeile eingebe, stürzt Fhem komplett ab und startet neu.
Dann gibts im Log diese MeldungUnmatched ( in regex; marked by <-- HERE in m/ userReadings{( <-- HERE ReadingsVal("Kameras","alertID","neu")[ :;]/ at fhem.pl line 2887.
Aber in meinem Code kommt doch der Begriff userReadings gar nicht vor?! Wie kann denn das diese Fehlermeldung erzeugen? Bist Du sicher, dass diese Meldung zu einem Code in der Kommandozeile passt?

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

Tommy82

Hi,
also das problem bestand danach, aber war kein vorwurf.

Das Attribut userReadings sieht jetzt so aus:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}

Ich hab hab keine Abstürze, aber auch irgendwie kein neues Readings welches ich auswerten kann, oder ich versteh es nicht wirklich.
Ich möchte ja eigentlich nur ein reading welches bei Änderung des wertes des readings "alertID" ein true or false erhält.
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI