Attribut über myUtils setzen schlägt fehl

Begonnen von Timo_FHEM, 12 März 2019, 14:59:01

Vorheriges Thema - Nächstes Thema

Timo_FHEM

Hallo,

ich hab ein Brett vorm Kopf und brauche mal einen IT Schreiner :-)

Ich möchte über eine Routine in der 99_myUtils.pm ein Attribut bei einem Device setzen.
Das funktioniert nicht. Ich hab schon x verschiedene Schreibweisen versucht aber irgendwie klappt nix davon.
Das Attribut wird nicht verändert. Ich habe es testweise auf "a" gesetzt. Wenn die Prozedur aufgerufen wird soll es auf "1" gesetzt werden.

Hat jemand eine Idee was ich falsch mache?

Hier die Prozedur, das (test) Device und das Logfile dazu.


sub setWinZaehler($) {
   my ($dev)=@_;
   my $devZaehler=AttrVal($dev,'winZaehler',0);
   Log3(undef,1,"setWinZaehler aufgerufen : $dev - $devZaehler");

   fhem("attr '$dev', winZaehler, 1");

   $devZaehler=AttrVal($dev,'winZaehler',0);
   Log3(undef,1,"setWinZaehler nach Reset : $dev - $devZaehler");
}



Dummy Device:
defmod test dummy
attr test userattr winOpenMaxTrigger winOpenTimer winOpenTimer2 winOpenType:Fenster,Tür winOpenName winZaehler valueFn
attr test alias test
attr test comment Fensterkontakt
attr test devStateIcon open:fts_door_right_open@red closed:fts_door_right@green
attr test room 0_Test
attr test valueFn {(STATE eq "on")?"closed":"open"}
attr test webCmd open:closed
attr test winOpenMaxTrigger 2
attr test winOpenName test
attr test winOpenTimer 00:00:10
attr test winOpenTimer2 00:10:00
attr test winOpenType Tür
attr test winZaehler a

setstate test open
setstate test 2019-03-12 14:45:28 state open


Logfile:
2019.03.12 14:45:38 1: setWinZaehler aufgerufen : test - a
2019.03.12 14:45:38 1: setWinZaehler nach Reset : test - a

Danke und Gruß Timo

marvin78

Denkst du denn sowas wie

attr '$dev', winZaehler, 1

würde in der Kommandozeile funktionieren?

Die Kommas und auch die Anführungszeichen haben in dem Befehl so nichts zu suchen.

Bitte die Grundlagen beherrschen, bevor man so tief einsteigt.



amenomade

Ausserdem benötigt man nach einer Attributenänderung nw. ein "save". Sowas wäre besser über userReading(s)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Timo_FHEM

Hi, danke für die Antworten.
Ich habe das jetzt so geändert :

fhem("attr $dev winZaehler 1");

Das funktioniert. Ich dachte das hätte ich vorher auch schon mal versucht, aber gut.

Mit den UserReadings schau ich mir mal an.

Danke.

Gruß Timo

Gesendet von meinem A0001 mit Tapatalk