eigenes Reading mit String befüllen... Syntaxfrage

Begonnen von MichaelO, 26 Juli 2017, 08:59:44

Vorheriges Thema - Nächstes Thema

MichaelO

Moin,

irgendwie stelle ich mich mit setReading etwas blöd an, oder verwende den falschen Befehl. Vielleicht kann mir wer weiterhelfen.

Ich habe ein DOIF, das eine Lampe steuert. Wenn das DOIF die Lampe anschaltet, soll im DOIF ein Reading "lastActivationType" auf "auto" gesetzt werden. Schaltet man die Lampe selbst ein oder aus, dann soll das Reading "manuell" enthalten. Das DOIF wertet das Reading aus, um selbst entsprechend anders zu reagieren, je nachdem, ob die Lampe eben manuell oder automatisch geschaltet wurde.

Ich setze den Wert des Reading innerhalb des DOIF mit

setReading $SELF lastActivationType manuell

Und bekomme im Log stets eine Fehlermeldung. Anführungszeichen um das "manuell" haben nichts geholfen, ich komme hier nicht weiter. Wie kann ich denn das Reading korrekt befüllen?

Danke
Michael

igami

Zitat von: MichaelO am 26 Juli 2017, 08:59:44
Und bekomme im Log stets eine Fehlermeldung.
Hast du die Fehlermeldung denn verstanden?

Hier mal der Link zur commandref
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

MichaelO

Zitat von: igami am 26 Juli 2017, 09:22:00
Hast du die Fehlermeldung denn verstanden?

Nein, sonst hätte ich das Problem ja selbst lösen oder meine Frage genauer eingrenzen können. Die commandref habe ich auch bereits angeschaut, ich komme jedoch mit der Beschreibung des setReading-Befehls dahingehend nicht zurecht, dass ich nicht erkennen kann, was bei mir falsch sein könnte.

Die Fehlermeldung im Logfile lautet
2017.07.26 08:48:40 2: di_WZ_DekobeleuchtungAutomatik:        setReading di_WZ_DekobeleuchtungAutomatik lastActivationType auto: Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]
where <devspec> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
<readingspec> can be a single reading name, a list separated by comma (,) or a regexp.


Da wird mir doch auch nur erklärt, wie denn der Befehl aufgebaut ist. Was genau ich nun falsch gemacht hab, steht da nicht. Oder hab ich was übersehen?

Gruß
Michael

Otto123

Hallo Michael,

an dem setreading Befehl selbst ist nichts falsch, ich nehme an der Syntax innerhalb Deines DOIF stimmt nicht. Er macht doch offenbar etwas anderes als setreading
Führe doch den Befehl einfach mal in der Kommandozeile von FHEM aus.
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

CoolTux

setReading != setreading

Commandref hätte geholfen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

igami

Zitat von: CoolTux am 26 Juli 2017, 10:26:10
setReading != setreading

Commandref hätte geholfen
Aber != ist doch kein Textvergleich, dann kommt nur sowas wie PERL WARNING: Argument "setReading" isn't numeric in numeric :P
Wenn schon dann "setReading" ne "setreading"
Und FHEM cmds sind nicht case sensitive, kann man mit "DEFINE test dummy" testen, sonst müsste man ja auch immer wissen wie das Modul geschrieben wurde, Dummy, dummy oder DUMMY.

Die Fehlermeldung ist aber nicht wirklich aussagekräftig.
Poste mal bitte ein List von dem device NACHDEM der Fehler auftritt.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CoolTux

tatsächlich. man kann den Befehl auch Groß klein schreiben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Manul

#7
Ist jetzt nur geraten, aber wenn ich das

Zitat von: MichaelO am 26 Juli 2017, 09:27:04
Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]

hiermit vergleiche

Zitat von: MichaelO am 26 Juli 2017, 08:59:44
setReading $SELF lastActivationType manuell

würde ich für denkbar halten, daß da einfach ein "=" fehlt.

Edit: Falsch geraten, wie die commandref zeigt.

nils_

Zitat von: MichaelO am 26 Juli 2017, 09:27:04
Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]
where <devspec> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
<readingspec> can be a single reading name, a list separated by comma (,) or a regexp.

fehlermeldung kommt denke ich hierher: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/Unit.pm#L4510

wie das mit DOIF bzw. dem Logeintrag zusammenhängt, kann ich leider nicht beantworten  :-\
viele Wege in FHEM es gibt!

MichaelO

So, dank Eurer Hinweise hab ich den Befehl ersteinmal in die Kommandozeile getippt, und bekam dieselbe Fehlermeldung - auch, wenn ich statt "auto" dort eine Zahl eingebe. Mit einem "=" war es auch nix.

Aaaaber... es scheint tatsächlich die verdammte Schreibweise gewesen zu sein. Wenn ich setreading statt setReading schreibe, kommt keine Fehlermeldung und das Reading nimmt den gewünschten Wert an. Sowas doofes aber auch... kommt davon, wenn man zu viele unterschiedliche Systeme beackert - ich schreibe beim Programmieren bei Namen von Prozeduren/Variablen immer das erste Wort klein und dann jedes neue, zusammengesetzte groß.

Allerdings ist die Fehlermeldung (wenn es das wirklich war) nicht besonders toll...

Werde das jetzt mal korrigieren und sehen, was die Automatik macht, sobald das DOIF scharf geht.

Gruß
Michael

Otto123

Hallo Michael,

kann nicht sein, ich weiß nicht was Du da auf welcher Kommandozeile eingetippt hast.
Ich habe einen dummy Test
Ob ich setReading Test lastActivationType auto
oder
setreading Test lastActivationType auto
eintippe ist völlig egal. Es funktioniert in beiden Fällen.

Wie er aus setreading -> setreadingdesc macht ist mir noch unklar  :-[

Es kann sein, weil Du es im DOIF aufrufst, oder das es an $SELF liegt. Aber $SELF wird eigentlich korrekt aufgelöst wie die Fehlermeldung zeigt.

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

MichaelO

Das ist ja echt komisch, ich habe es gerade nochmal getestet...

Kommandozeile
setreading di_WZ_DekobeleuchtungAutomatik lastActivationType auto
Keine Fehlermeldung, das Reading wird korrekt gesetzt

Kommandozeile
setReading di_WZ_DekobeleuchtungAutomatik lastActivationType auto
Fehlermeldung wie gehabt

Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]
where <devspec> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
<readingspec> can be a single reading name, a list separated by comma (,) or a regexp.


Das soll wer verstehen

Otto123

hast Du eine besondere FHEM Version? Was sagt version?

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

MichaelO

Eigentlich mache ich recht regelmäßig Updates...

Latest Revision: 14773


Otto123

Sehr komisch.

Ich habe gerade nochmal auch ein DOIF probiert, es ist völlig egal wie ich setreading schreibe, ob groß klein komplett groß - geht alles.

Was sagt denn list TYPE=cmdalias

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