Wenn ich folgende Routine aus meiner 99 Utils ausführe:
sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke_akt = ReadingsVal('Denon_AVR','volume','40');
   chop ($lautstaerke_akt);
   chop ($lautstaerke_akt);
   my $lautstaerke_neu = $lautstaerke_akt + 5;
 
   fhem("set Denon_AVR volume ".$lautstaerke_neu.";");
   fhem("define Denon_AVR.Rollladen at +00:00:40 set Denon_AVR volume ".$lautstaerke_akt.";");
  }
}
bekomme ich folgenden Fehler:
Denon_AVR.Rollladen: unknown attribute HMLAN1. Type 'attr Denon_AVR.Rollladen ?' for a detailed list.
Hier ein List des Denon:
Internals: 
   CFGFN 
   Clients    :DENON_AVR_ZONE: 
   DEF        192.168.2.24 
   DeviceName 192.168.2.24:23 
   FD         35 
   NAME       Denon_AVR 
   NEXT_OPEN  1476636371.62174 
   NR         448 
   NTFY_ORDER 50-Denon.AVR 
   PARTIAL 
   STATE      opened 
   TIMEOUT    3 
   TYPE       DENON_AVR 
   Readings: 
     2016-10-16 18:45:17   allZoneStereo   off 
     2016-10-16 18:45:17   autoStandby     off 
     2016-10-16 18:45:17   bass            0 dB 
     2016-10-16 18:45:17   cinemaEQ        off 
     2016-10-16 18:45:17   currentAlbum    - 
     2016-10-16 18:45:17   currentArtist   - 
     2016-10-16 18:45:17   currentBitrate  - 
     2016-10-16 18:45:17   currentMedia    - 
     2016-10-16 18:45:17   currentPlaytime - 
     2016-10-16 18:45:17   currentStation  - 
     2016-10-16 18:45:17   currentTitle    - 
     2016-10-16 18:45:17   digitalInput    auto 
     2016-10-16 18:45:17   display         bright 
     2016-10-16 18:45:17   dynamicCompression off 
     2016-10-16 18:45:17   dynamicEQ       on 
     2016-10-16 18:45:17   dynamicVolume   off 
     2016-10-16 18:45:17   eco             off 
     2016-10-16 18:45:16   input           Cbl/Sat 
     2016-10-16 18:45:17   levelCenter     0 dB 
     2016-10-16 18:45:17   levelFrontLeft  0 dB 
     2016-10-16 18:45:17   levelFrontRight 0 dB 
     2016-10-16 18:45:17   levelSourroundBackLeft 0 dB 
     2016-10-16 18:45:17   levelSourroundBackRight 0 dB 
     2016-10-16 18:45:17   levelSourroundLeft 0 dB 
     2016-10-16 18:45:17   levelSourroundRight 0 dB 
     2016-10-16 18:45:17   levelSubwoofer  0 dB 
     2016-10-16 18:45:17   loudness        on 
     2016-10-16 18:45:17   lowFrequencyEffects 0 dB 
     2016-10-16 18:45:17   multEQ          reference 
     2016-10-16 18:45:16   mute            off 
     2016-10-16 18:45:17   playStatus      stopped 
     2016-10-16 18:45:16   power           on 
     2016-10-16 18:45:16   presence        present 
     2016-10-16 18:45:17   setup           off 
     2016-10-16 18:45:16   sleep           off 
     2016-10-16 18:45:17   sound           Dolby PL2X C 
     2016-10-16 18:45:16   state           on 
     2016-10-16 18:45:17   stateAV         on 
     2016-10-16 11:06:08   surroundMode    Auto 
     2016-10-16 18:45:17   toneControl     off 
     2016-10-16 18:45:17   treble          0 dB 
     2016-10-16 18:45:17   tunerBand       FM 
     2016-10-16 18:45:17   tunerFrequency  87.5 kHz 
     2016-10-16 18:45:17   tunerMode       auto 
     2016-10-16 18:45:17   tunerPreset     1 
     2016-10-16 18:45:17   videoSelect     off 
     2016-10-16 19:43:27   volume          48.5 % 
     2016-10-16 19:43:27   volumeMax       98 % 
     2016-10-16 19:43:27   volumeStraight  -31.5 dB 
     2016-10-16 18:45:16   zone2           off 
     2016-10-16 18:45:16   zoneMain        on 
   Helper: 
     INPUT      SAT/CBL 
     PARTIAL 
     USEDINPUT  Aux1,Aux2,Blu-Ray,Bluetooth,CD,Cbl/Sat,DVD,Favorites,Favorites_play,Flickr,Game,Mediaplayer,OnlineMusic,Phono,Server,TV,Tuner,Usb/iPod,Usb_play,iPod_play,iRadio,iRadio_play 
     isPlaying  0 
     nextConnectionCheck 1476639987.71346 
Attributes: 
   DbLogExclude .* 
   cmdIcon    muteT:rc_MUTE 
   devStateIcon on:rc_GREEN:off off:rc_STOP:on absent:rc_RED muted:rc_MUTE@green:muteT playing:rc_PLAY@green:pause paused:rc_PAUSE@green:play 
   group      Medien 
   room       S_Wohnraum 
   stateFormat stateAV 
   webCmd     volume:muteT:input:surroundMode 
Das Modul habe ich aus folgendem Beitrag:
https://forum.fhem.de/index.php/topic,58452.0.html
Kann mir jemand sagen, wieso der Fehler kommt? Danach kann ich die Routine auch nicht mehr ausführen, bis ich sie neu geladen habe. 
			
			
			
				Die Fehlermeldung passt nicht zur gezeigten sub. Reload der myUtils vergessen? 2 Subs mit identischen Namen?
			
			
			
				Weil es nicht hat passt und ich den Fehler nicht finde, habe ich es ja hier gepostet :) 
Keine doppelte Sub vorhanden und reload findet doch auch statt, wenn ich auf speichern klicke, oder? 
Mich wundert es auch, aber kommt der Fehler immer dann, wenn ich die Sub ausführe und danach kann ich sie kein zweites Mal ausführen. 
			
			
			
				Es scheint an dieser Zeile zu liegen:
fhem("define Denon_AVR.Rollladen at +00:00:40 set Denon_AVR volume ".$lautstaerke_akt.";");
Kommentiere ich diese aus, tritt das Problem nicht auf.
			
			
			
				die meldung wird nur dann ausgegeben wenn die CommandAttr verwendet wird. du kannst mal versuchen da an den anfang einen aufruf von stacktrace() einzubauen und im log zu schauen woher der aufruf genau kommt.
gruss
  andre
ps: vielleicht helfen dir die folgenden dinge auch weiter:
- die die addition wird schief gehen wenn es das reading volume nicht gibt. vom default 40 zwei mal etwas abgeschnitten bleibt nichts übrig
- statt ReadingsVal und die beiden chop wäre readingsNum besser
- das letze ; in den beiden fhem kommandos ist überflüssig
- statt string concatenation kannst du auch direkt variablen in einem "..." string verwenden.
die routine könnte also z.b. so aussehen:sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke = ReadingsNum('Denon_AVR','volume','40');
 
   fhem("set Denon_AVR volume ".$lautstaerke+5);
   fhem("define Denon_AVR.Rollladen at +00:00:40 set Denon_AVR volume $lautstaerke");
  }
}
oder mit sleep statt at:sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke = ReadingsNum('Denon_AVR','volume','40');
 
   fhem("set Denon_AVR volume ".($lautstaerke+5).";sleep 40;set Denon_AVR volume $lautstaerke" );
  }
}
			
			
			
				@Andre
Zitatstring verenden
das hat meine Laune deutlich aufgeheitert  ;)
VG
Frank
			
				 :P
			
			
			
				Dann lies mal den Thread: https://forum.fhem.de/index.php/topic,59017.0.html
da sind so manche nützliche Strings am "verenden" oder werden nicht wahrgenommen usw. ....  ::)
ZitatEinzige Möglichkeit das zu unterbinden: Privates FHEM Forum mit vorherigem Einstellungstest ! Vielleicht sollte man mal eine demokratische Abstimmung vornehmen ?
VG
Frank
			
				Zitat von: justme1968 am 16 Oktober 2016, 22:08:25
die meldung wird nur dann ausgegeben wenn die CommandAttr verwendet wird. du kannst mal versuchen da an den anfang einen aufruf von stacktrace() einzubauen und im log zu schauen woher der aufruf genau kommt.
Muss ich mal schauen, was du damit meinst. Habe ich noch nicht ganz verstanden
Zitat
die routine könnte also z.b. so aussehen:
[code]sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke = ReadingsNum('Denon_AVR','volume','40');
 
   fhem("set Denon_AVR volume ".$lautstaerke+5);
   fhem("define Denon_AVR.Rollladen at +00:00:40 set Denon_AVR volume $lautstaerke");
  }
}
Hatte nicht ganz geklappt, da der "$lautstaerke+5" nicht verarbeiten konnte, aber nicht schlimm, konnte ich umgehen. Der Attr Fehler kommt jedoch weiterhin.
Zitat
oder mit sleep statt at:
sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke = ReadingsNum('Denon_AVR','volume','40');
 
   fhem("set Denon_AVR volume ".($lautstaerke+5).";sleep 40;set Denon_AVR volume $lautstaerke" );
  }
}
Die zweite Möglichkeit klappt und wirft den Fehler nicht aus. Ich frage mich, wie er auf das CommandAttr kommt? Liegt es vielleicht an einem Fehler im Modul??
			
 
			
			
				Hier die Antwort, wenn ich es so aufrufe:
sub Rollladen_Lautstaerke_TV ()
{
 if (Value("Denon_AVR") eq "on")
  {
   my $lautstaerke_akt = ReadingsNum('Denon_AVR','volume','40');
   my $lautstaerke_neu = $lautstaerke_akt+1;
   
   fhem("set Denon_AVR volume ".$lautstaerke_neu);
   stacktrace();
   fhem("define Denon_AVR.Zurueck at +00:00:10 set Denon_AVR volume ".$lautstaerke_akt);
   stacktrace();
  }
}
2016.10.16 22:32:32 3: stacktrace:
2016.10.16 22:32:32 3:     main::Rollladen_Lautstaerke_TV      called by (eval 53413) (1)
2016.10.16 22:32:32 3:     (eval)                              called by fhem.pl (1006)
2016.10.16 22:32:32 3:     main::AnalyzePerlCommand            called by fhem.pl (1025)
2016.10.16 22:32:32 3:     main::AnalyzeCommand                called by fhem.pl (954)
2016.10.16 22:32:32 3:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2258)
2016.10.16 22:32:32 3:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (764)
2016.10.16 22:32:32 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (455)
2016.10.16 22:32:32 3:     main::FW_Read                       called by fhem.pl (3221)
2016.10.16 22:32:32 3:     main::CallFn                        called by fhem.pl (671)
2016.10.16 22:32:33 3: Denon_AVR.Zurueck: unknown attribute HMLAN1. Type 'attr Denon_AVR.Zurueck ?' for a detailed list.
2016.10.16 22:32:33 3: stacktrace:
2016.10.16 22:32:33 3:     main::Rollladen_Lautstaerke_TV      called by (eval 53413) (1)
2016.10.16 22:32:33 3:     (eval)                              called by fhem.pl (1006)
2016.10.16 22:32:33 3:     main::AnalyzePerlCommand            called by fhem.pl (1025)
2016.10.16 22:32:33 3:     main::AnalyzeCommand                called by fhem.pl (954)
2016.10.16 22:32:33 3:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2258)
2016.10.16 22:32:33 3:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (764)
2016.10.16 22:32:33 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (455)
2016.10.16 22:32:33 3:     main::FW_Read                       called by fhem.pl (3221)
2016.10.16 22:32:33 3:     main::CallFn                        called by fhem.pl (671)
Allerdings sagt mir das Ganze leider nichts.
Edit:
Wenn ich stacktrace in global auf 1 setze, dann sehe ich nicht mehr. Warum habe ich jetzt auch verstanden, da es ja kein PEARL WARNING ist. Leider bin ich mit meinem geringen Latein am Ende um zu erkennen, wer den Attr Command startet.
			
			
			
				nein. nicht in deinen code. sondern direkt in CommandAttr in fhem.pl. z.b. zeile 2482
			
			
			
				Ah ok, dann baue ich es mal in die Zeile ein und schaue was passiert. Danke
			
			
			
				Habe es jetzt Mal in der Zeile eingefügt, FHEM neugestartet, das Log bereinigt :D und die Sub ausgeführt. Das Ergebnis sieht nun wie folgt aus:
2016.10.16 22:50:40 3:     main::CommandAttr                   called by fhem.pl (1084)
2016.10.16 22:50:40 3:     main::AnalyzeCommand                called by fhem.pl (954)
2016.10.16 22:50:40 3:     main::AnalyzeCommandChain           called by ./FHEM/91_notify.pm (102)
2016.10.16 22:50:40 3:     main::notify_Exec                   called by fhem.pl (3222)
2016.10.16 22:50:40 3:     main::CallFn                        called by fhem.pl (3144)
2016.10.16 22:50:40 3:     main::DoTrigger                     called by fhem.pl (1800)
2016.10.16 22:50:40 3:     main::CommandDefine                 called by fhem.pl (1084)
2016.10.16 22:50:40 3:     main::AnalyzeCommand                called by fhem.pl (954)
2016.10.16 22:50:40 3:     main::AnalyzeCommandChain           called by fhem.pl (3234)
2016.10.16 22:50:40 3:     main::fhem                          called by ./FHEM/99_myUtils.pm (500)
2016.10.16 22:50:40 3:     main::Rollladen_Lautstaerke_TV      called by (eval 680) (1)
2016.10.16 22:50:40 3:     (eval)                              called by fhem.pl (1006)
2016.10.16 22:50:40 3:     main::AnalyzePerlCommand            called by fhem.pl (1025)
2016.10.16 22:50:40 3:     main::AnalyzeCommand                called by fhem.pl (954)
2016.10.16 22:50:40 3:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2258)
2016.10.16 22:50:40 3:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (764)
2016.10.16 22:50:40 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (455)
2016.10.16 22:50:40 3:     main::FW_Read                       called by fhem.pl (3222)
2016.10.16 22:50:40 3:     main::CallFn                        called by fhem.pl (671)
Hilft das weiter?
			
			
			
				beim aufruf von Rollladen_Lautstaerke_TV wird durch den fhem aufruf in zeile 500 deiner 99_myUtils.pm das define aufgerufen und dieses triggert ein notify das dann seinerseits CommandAttr aufruft.
mit global verbose 5 solltest du sehen können welches notify das ist.
gruss
  andre 
			
			
			
				Ich bin begeistert, was du alles siehst. 
Das einzige notify, welches auf ein define hört und mir bekannt ist, wäre dieses hier:
notify DbLog.Exclude.Automatisch global:DEFINED.* attr $EVTPART1 DbLogExclude .*
Aber dieses hat ja eigentlich nix mit HMLAN1 zu tun, welches er setzen will. Außer das $EVTPART1 zieht sich irgendwo das HMLAN1 her.
Im Log habe ich mit Verbose 5 folgendes zum Ausführen der Sub gefunden, hoffe das ist der richtige Auszug. Wird natürlich mit verbose 5 sehr schnell unübersichtlich:
2016.10.16 23:02:37 5: Cmd: >{Rollladen_Lautstaerke_TV ()}<
2016.10.16 23:02:37 5: Cmd: >set Denon_AVR volume 50<
2016.10.16 23:02:37 5: DENON_AVR Denon_AVR: called SetVolume.
2016.10.16 23:02:37 4: DENON_AVR Denon_AVR: SimpleWrite MV500 <volume>.
2016.10.16 23:02:37 5: SW: 4d563530300d
2016.10.16 23:02:37 5: Cmd: >define Denon_AVR.Zurueck at +00:00:10 set Denon_AVR volume 49<
2016.10.16 23:02:37 5: Triggering Denon_AVR.Zurueck (1 changes)
2016.10.16 23:02:37 5: Starting notify loop for Denon_AVR.Zurueck, first event Next: 23:02:47
2016.10.16 23:02:37 5: Notify from Device: Denon_AVR.Zurueck recieved
2016.10.16 23:02:37 5: Triggering global (1 changes)
2016.10.16 23:02:37 5: Starting notify loop for global, first event DEFINED Denon_AVR.Zurueck
2016.10.16 23:02:37 5: Triggering DbLog.Exclude.Automatisch
2016.10.16 23:02:37 4: DbLog.Exclude.Automatisch exec attr $EVTPART1 DbLogExclude .*
2016.10.16 23:02:37 5: Cmd: >attr $EVTPART1 DbLogExclude .*<
2016.10.16 23:02:37 5: Triggering global (2 changes)
2016.10.16 23:02:38 5: Notify from Device: global recieved
2016.10.16 23:02:38 5: DENON_AVR Denon_AVR: read.
2016.10.16 23:02:38 4: DENON_AVR Denon_AVR: parsing <MV50> to <volume/volumeStraight 50/-30>.
2016.10.16 23:02:38 4: DENON_AVR Denon_AVR: parsing <MVMAX 98> to <volumeMax 98>.
2016.10.16 23:02:38 5: Triggering Denon_AVR (3 changes)
2016.10.16 23:02:38 5: Starting notify loop for Denon_AVR, first event volumeStraight: -30 dB
2016.10.16 23:02:38 5: Triggering Denon_AVR (3 changes)
2016.10.16 23:02:38 5: Notify from Device: Denon_AVR recieved
2016.10.16 23:02:38 5: Triggering Denon_AVR (3 changes)
2016.10.16 23:02:38 4: WEB_192.168.2.10_51232 GET /fhem?fw_id=409; BUFLEN:0
2016.10.16 23:02:38 4: name: /fhem?fw_id=409 / RL:1380 / text/html; charset=UTF-8 / Content-Encoding: gzip
			
			
				deaktivere das noitify und schau ob die meldung weg ist.
wenn nicht suchen wir weiter.
			
			
			
				ich schätze du meinst deaktivieren, oder?
			
			
			
				steht doch da :)
			
			
			
				Zitat von: justme1968 am 16 Oktober 2016, 23:20:00
steht doch da :)
;)
Ähm, ich habe jetzt überhaupt keine Ahnung, wieso es geht bzw. der Fehler nicht mehr kommt. Ich wollte gerade das notify deaktivieren, hatte aber vorher die Sub nochmal gestartet um zu testen, ob der Fehler nach dem restart von FHEM (stacktrace raus genommen) wieder kommt. Er kam nicht. Jetzt habe ich sie ganze 5 mal gestartet und jedes mal funktionierte sie ohne Fehler. Also ich hab kein Plan warum. Solange er nicht wieder kommt, soll es mir recht sein, wobei ich schon gerne gewusst hätte, wo der Fehler lag. 
Ich danke dir erst Mal für deine Mühe und Geduld. Sollte er wieder erscheinen, werde ich erst das notify deaktivieren. Sollte er dann immer noch kommen, melde ich mich wieder. 
			
 
			
			
				Ah, ich weiß wieso der Fehler nicht kommt. Ich hatte die alte Version mit sleep eingebaut und trozt speichern und reload der myutils mit der version ohne sleep, hat er sie nicht geändert. Kein Wunder, dass der Fehler nicht kommt.
Edit:
Es bleibt dabei. Auch mit der "fehlerhaften" Sub wird der Fehler nicht mehr ausgeworfen. Wie gesagt, ich habe keine Ahnung wieso, aber es ist so. Sollte sich etwas ändern, dann melde ich mich. Danke :)