FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: thor42 am 25 März 2017, 08:34:48

Titel: Gelöst: setreading es 'fehlt' der readingname
Beitrag von: thor42 am 25 März 2017, 08:34:48
Moin,
bei der folgenden definition:

define AZ.SteckdoseSchrankLED_notify notify AZ.SteckdoseSchrankLED { $EVENT=~s/://;;;; fhem("setreading AZ.SteckdoseSchrankLED $EVENT") ;;;; }

gibt es leider Events, denen der name fehlt. Auszug:

setreading <devspec> <reading> <value>

Im Log steht dann sowas:

setreading AZ.SteckdoseSchrankLED on : Usage: setreading <name> <reading> <value>


Lässt sich in der ~s/.. Anweisung auch die Angabe state für den fehlenden Namen bei on/off  ergänzen?

thor42
Titel: Antw:setreading es 'fehlt' der readingname
Beitrag von: CoolTux am 25 März 2017, 10:12:44
Vielleicht solltest Du Dir erstmal anschauen was von Deinem EVENT noch übrig bleibt. Statt fhem(" vielleicht einfach erstmal ein Log 1, "Event gleich $EVENT";
Titel: Antw:setreading es 'fehlt' der readingname
Beitrag von: thor42 am 25 März 2017, 10:36:07
Es kommt halt für den state lediglich ein on bzw off an, d.h. der name ist nich angegeben.
Andere Werte kommen als power 2.5 W  an und können dann einfach übernommen werden.
Ich hätte den on bzw. off dann gerne im state und würde dazu gerne einfach den Text im Falle on/off um das Wort state ergänzen.
Logauszug:

2017.03.25 10:20:23 1: Event gleich reportedState off
2017.03.25 10:20:23 1: Event gleich power 0.0 W
2017.03.25 10:23:45 1: Event gleich on
2017.03.25 10:23:45 1: Event gleich on
2017.03.25 10:23:45 1: Event gleich reportedState on
2017.03.25 10:23:46 1: Event gleich off
2017.03.25 10:23:46 1: Event gleich off
2017.03.25 10:23:46 1: Event gleich reportedState off
2017.03.25 10:24:58 1: Event gleich on
2017.03.25 10:24:58 1: Event gleich on
2017.03.25 10:24:58 1: Event gleich reportedState on
2017.03.25 10:24:59 1: Event gleich power 2.5 W
2017.03.25 10:24:59 1: Event gleich off
2017.03.25 10:24:59 1: Event gleich off
2017.03.25 10:24:59 1: Event gleich reportedState off
2017.03.25 10:25:00 1: Event gleich power 0.0 W

Bei on bzw off kommt dann folgendes im Log:

2017.03.25 10:41:11 3: setreading AZ.SteckdoseSchrankLED off : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by komma (,) or a regexp. See the devspec section in the commandref.html for details.

Es sollte 'state off' bzw. 'state on' werden.
Titel: Antw:setreading es 'fehlt' der readingname
Beitrag von: CoolTux am 25 März 2017, 10:54:26
Wenn es sich um einen Dummy handelt den du befüllen willst dann nimm set statt setreading. Ansonsten schau mal ob du nach dem setreading DEVICENAME nicht ein state hinschreiben kannst und danach erst EVENT. Bin mir aber nicht sicher ob man state mit setreading setzen kann.
Titel: Antw:setreading es 'fehlt' der readingname
Beitrag von: thor42 am 25 März 2017, 11:22:00
Habe den notify etwas umgeschrieben:

AZ.SteckdoseSchrankLED {
  $EVENT=~s/://;;
  my $vls=scalar(split(/\s+/, $EVENT));;
  Log 1, "Event gleich $EVENT $vls";;
  if($vls > 1) { Log 1, "AA $EVENT";; fhem("setreading AZ.SteckdoseSchrankLED $EVENT") ;; } 
}

Dann schreibt er nur die Werte, die auch den Namen haben.
und für den dummy ein stateFormat ergänzt:

attr stateFormat {sprintf("%s",ReadingsVal("AZ.SteckdoseSchrankLED","status",0))}

Damit funktioniert es wie beabsichtigt. Liesse sich evt. auch einfacher schreiben.
Titel: Antw:Gelöst: setreading es 'fehlt' der readingname
Beitrag von: igami am 25 März 2017, 13:27:37
Es gibt das Attribut addStateEvent
Titel: Antw:Gelöst: setreading es 'fehlt' der readingname
Beitrag von: thor42 am 25 März 2017, 18:14:12
Danke igami, damit verkürzt sich das ohne Fehlermeldungen im Log auf:

attr AZ.SteckdoseSchrankLED_notify addStateEvent 1

AZ.SteckdoseSchrankLED { $EVENT=~s/://;; fhem("setreading AZ.SteckdoseSchrankLED $EVENT") ;; }


thor42