Hallo zusammen,
aktuell räume ich mein System ein wenig auf. Ich versuche alle noch so kleinen Fehler weg zu bekommen. Nun habe ich einen Fehler, der mir neu ist und nach dem Update vorhin das erste mal kam, im FHEM LOG.
2019.08.29 14:21:52 1: configfile: Bad line >< for az_steckdose_stehlampe
Google sagt mir nichts dazu. Das Gerät an sich funktioniert.
Anbei aber mal ein List:
Internals:
CFGFN ./FHEM/Tasmota.cfg
CHANGED
CID shelly1_93ABF9
DEF shelly1_93ABF9
DEVICETOPIC az_steckdose_stehlampe
FUUID 5ca5fe80-f33f-fcb4-7344-3a706c54a1f01933
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 27
MQTT2_FHEM_Server_TIME 2019-08-29 14:28:11
MSGCNT 27
NAME az_steckdose_stehlampe
NR 113
STATE off
TYPE MQTT2_DEVICE
READINGS:
2019-08-28 15:07:34 fw_ver 20190821-094851/v1.5.2@4148d2b7
2019-08-28 15:07:34 id shelly1-93ABF9
2019-08-29 14:28:11 input_0 1
2019-08-28 15:07:34 ip 192.168.xxx.xxx
2019-08-28 15:07:34 mac BCDDC293ABF9
2019-08-28 15:07:34 new_fw false
2019-08-29 14:22:11 online true
2019-08-29 14:28:11 relay_0 off
2019-08-29 14:21:14 state off
Attributes:
IODev MQTT2_FHEM_Server
alias Arbeitszimmer Stehlampe Steckdose
devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "false" || ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "true" ? "rot" : ReadingsVal($name,"online","false") eq "true" && ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $light = ReadingsVal($name,"state","off") eq "on"?'light_floor_lamp@green':'light_floor_lamp';; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a> </div>" }
event-on-change-reading .*
group Licht
model A_10_shelly1
room MQTT
setList relay_0:on,off,toggle shellies/shelly1-93ABF9/relay/0/command $EVTPART1
off:noArg shellies/shelly1-93ABF9/relay/0/command off
on:noArg shellies/shelly1-93ABF9/relay/0/command on
x_update:noArg shellies/shelly1-93ABF9/command update_fw
webCmd :relay_0
Danke für jede Hilfe!
Na ja, ich unterstelle mal, dass der Eintrag beim Systemstart kommt...
Dann hilft ein list wenig, oder ;) ?
Generell klingt mir das nach einem weiteren Symptom, das man mit dem manuellen Editieren der configfile generieren kann :P . Du wirst also kaum Helfer finden, und wenn, werden die vermutlich als erstes die cfg-Zeilen sehen wollen... (In denen man aber ggf. nichts sieht, wenn z.B. Sonderzeichen und ähnlicher Quatsch wegen des Hin- und Herkonvertierens verlustigt gegangen sind ;D ).
Zeig mal ./FHEM/Tasmota.cfg, sowie die Datei, die davor inkludiert wird und die fhem.cfg.
Ich hab ein Herz für Config-Editierer ;-)
Hey und guten Morgen,
zum Glück habe ich tatsächlich nicht in der cfg gefingert. Der Fehler ist neu und erst seit dem letzten Update. Das habe ich kurz vor dem Thread hier gemacht.
Genau, der Fehler kommt direkt nach dem neustart von FHEM.
Die FHEM cfg includiert, seit Beginn so...
#
# Module / Input
#
#include ./FHEM/TabletUI.cfg
include ./FHEM/Energie.cfg
include ./FHEM/Tasmota.cfg
include ./FHEM/CULs.cfg
include ./FHEM/Sonos.cfg
include ./FHEM/Alexa.cfg
include ./FHEM/Anwesenheit.cfg
#include ./FHEM/Logitech.cfg
#
# Endgeräte / Output
#
include ./FHEM/Heizung.cfg
include ./FHEM/Intertechno.cfg
include ./FHEM/TV.cfg
include ./FHEM/Benachrichtigungen.cfg
include ./FHEM/37_EchoDevice.cfg
Hier wurde nichts geändert. Das klappt ja auch soweit. Meckern tut er bei der az_steckdose. Die dann in der Tasmota.cfg liegt als def.
############################
### Shelly´s ###
############################
############
# Shelly 1 #
############
# Arbeitszimmer Steckdose für Stehlampe
define az_steckdose_stehlampe MQTT2_DEVICE shelly1_93ABF9
setuuid az_steckdose_stehlampe 5ca5fe80-f33f-fcb4-7344-3a706c54a1f01933
attr az_steckdose_stehlampe IODev MQTT2_FHEM_Server
attr az_steckdose_stehlampe alias Arbeitszimmer Stehlampe Steckdose
attr az_steckdose_stehlampe devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "false" || ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "true" ? "rot" : ReadingsVal($name,"online","false") eq "true" && ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";;;; my $light = ReadingsVal($name,"state","off") eq "on"?'light_floor_lamp@green':'light_floor_lamp';;;; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";;;; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a> </div>" }
attr az_steckdose_stehlampe event-on-change-reading .*
attr az_steckdose_stehlampe group Licht
attr az_steckdose_stehlampe model A_10_shelly1
attr az_steckdose_stehlampe room MQTT
attr az_steckdose_stehlampe setList relay_0:on,off,toggle shellies/shelly1-93ABF9/relay/0/command $EVTPART1\
off:noArg shellies/shelly1-93ABF9/relay/0/command off\
on:noArg shellies/shelly1-93ABF9/relay/0/command on\
x_update:noArg shellies/shelly1-93ABF9/command update_fw
attr az_steckdose_stehlampe webCmd :relay_0
##############
# Shelly 1PM #
##############
# Wohnzimmer Deckenlicht (Wechselschaltung)
define MQTT2_shelly1pm_E649CE MQTT2_DEVICE shelly1pm_E649CE
.......
Das hier ist natürlich nur ein Auszug, da die Datei x defs enthält. Ich fummel seit ca. 6 Monaten nicht mehr direkt in der cfg herum, das die Gründe ja oft genug offen gelegt wurden. Ich hatte auch die Hoffnung, diese "bad line" etwas genauer ausgegeben zu bekommen. Aber das war wohl nix. Ggf. in devStateIcon ein Dreher oder so?
PS: Hier habe ich natürlich aus der cfg direkt heraus kopiert. Sieht man ja an den ganzen \ und ;
Danke für Herz und Hilfe :) :-P
Hab gerade nicht so viel Zeit, aber den interessanten Teil hab ich mal durch den Perl Beautifier gejagt:
my $amp =
ReadingsVal( $name, "online", "false" ) eq "false"
&& ReadingsVal( $name, "new_fw", "false" ) eq "false"
|| ReadingsVal( $name, "online", "false" ) eq "false"
&& ReadingsVal( $name, "new_fw", "false" ) eq "true"
? "rot"
: ReadingsVal( $name, "online", "false" ) eq "true"
&& ReadingsVal( $name, "new_fw", "false" ) eq "true" ? "gelb"
: "gruen";
my $light =
ReadingsVal( $name, "state", "off" ) eq "on"
? 'light_floor_lamp@green'
: 'light_floor_lamp';
my $show =
"$amp" eq "gelb"
? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">"
. FW_makeImage( "10px-kreis-" . $amp ) . "</a>"
: "<a href=\"http://"
. ReadingsVal( $name, "ip", "none" )
. " \"target=\"_blank\">"
. FW_makeImage( "10px-kreis-" . $amp ) . "</a>";
"<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">"
. FW_makeImage($light)
. "</a> </div>"
Ich finde ja, dass du devStateIcon mit ganz schön viel Logik überladen hast. Hast du hier kürzlich was geändert?
Zitat von: 87insane am 30 August 2019, 07:36:36
zum Glück habe ich tatsächlich nicht in der cfg gefingert.
;D
Witzige Aussage. Das war mir neu, dass
a) includes neuerdings von alleine angelegt werden, und
b) neue Geräte automatisch in das passende include-File geschoben werden...
[/Ironie]
Im Ernst: wer includes verwendet, editiert die cfg! (Die Frage ist nur, wann das zzuletzt erfolgt ist...) Und ob du jetzt "direkt" oder "nur" einen includierten Teil editierst, kommt auf dasselbe raus.
Hast du das von Christoph als "interessanten Teil" bezeichnete (in der Tat neue ;) ) devStateIcon über die RAW-Funktion reingeschubst oder über das Editieren in FHEMWEB?
ZitatIch finde ja, dass du devStateIcon mit ganz schön viel Logik überladen hast. Hast du hier kürzlich was geändert?
Nein es wurde nichts geändert. Das ist seit einiger Zeit so. Habe ich mir zeigen lassen von Beta-User :)
ZitatWitzige Aussage. Das war mir neu, dass
a) includes neuerdings von alleine angelegt werden, und
b) neue Geräte automatisch in das passende include-File geschoben werden...
a) Habe ich zu meinen FHEM Anfängen angelegt. Habe sie bisher nicht mehr angepasst. Deswegen auch noch der Name Tasmota.cfg. Normal wäre es eher eine MQTT.cfg. Aber wie gesagt, hatte ich das so gelassen.
b) Nachdem ich den Shelly "damals" angelegt hatte, habe ich ihn natürlich verschieben müssen. Aber alle Anpassungen danach, wie devStateIcon usw. kommen über die DEF Ebene im jeweiligem Gerät. Ich musste es ja selber lernen, dass es sonst immer wieder Probleme gibt.
[OT] Neu ist dieser Teil von devStateIcon nicht wirklich. Das ist ne abgespeckte Version vom Shelly1pm mit dem Ampel-System, welches du so nicht einbauen wolltest, da es zu viel prüft. Mit deiner kurzen Variante fallen aber Prüfungen weg und deswegen kam das für mich nicht in Frage. Mit dieser Version hab ich alle Farben und verschiedene Reaktionen beim klicken des Punktes. Klappt auch alles bei allen Shellys. War ne Hoffnung oder Vermutung das es daran liegt. Das ist aber auch schon lange drin.[/OT]
Speziell dieser Shelly ist mein erster Gewesen. An dem habe ich nix mehr angepasst oder sonst was. Wie gesagt, der Fehler ist erst seit dem Update vor diesem Thread zu sehen. Vorher war er nicht da. Ggf. wird etwas geprüft, was vorher nicht geprüft wurde oder, oder....
ZitatPerl Beautifier
Danke, kannte ich noch nicht.. Mache das jedes mal von Hand. Fhem hat bei devStateIcon ja leider nur das kleine Feld.
Zitat von: 87insane am 30 August 2019, 11:30:59
Nein es wurde nichts geändert. Das ist seit einiger Zeit so. Habe ich mir zeigen lassen von Beta-User :)
[...][OT] Neu ist dieser Teil von devStateIcon nicht wirklich. Das ist ne abgespeckte Version vom Shelly1pm mit dem Ampel-System, welches du so nicht einbauen wolltest, da es zu viel prüft. Mit deiner kurzen Variante fallen aber Prüfungen weg und deswegen kam das für mich nicht in Frage. Mit dieser Version hab ich alle Farben und verschiedene Reaktionen beim klicken des Punktes. Klappt auch alles bei allen Shellys. War ne Hoffnung oder Vermutung das es daran liegt. Das ist aber auch schon lange drin.[/OT]
Wie in dem anderen Thread angemerkt: Das geht (bei gleicher erweiterter Funktionalität!) auch mit deinem Ampelsystem deutlich kürzer/mit weniger Prüfungen, wenn ich mich nicht schwer irre ;) . Es mag funktionieren, ist aber nicht optimiert, und daher kein gutes Beispiel. DESWEGEN wollte ich es nicht in das template einbauen... (Du darfst mir gerne das Gegenteil beweisen ::) ).
Zitata) Habe ich zu meinen FHEM Anfängen angelegt. Habe sie bisher nicht mehr angepasst. Deswegen auch noch der Name Tasmota.cfg. Normal wäre es eher [...]
Ergo: Editiert, wie von mir "behauptet"...
Vorschlag:
Versuche mal, das fragliche Device im RAW-Editor zu überschreiben (ggf. ändere (vorübergehend) "irgendwas unwichtiges" dran, z.B. einen weiteren room oä.) und save das Ergebnis, danach kannst du ggf. die Änderung auch zurücknehmen und nochmal save ausführen.
Bin gespannt, ob der Fehler dann weg ist.
ZitatWie in dem anderen Thread angemerkt: Das geht (bei gleicher erweiterter Funktionalität!) auch mit deinem Ampelsystem deutlich kürzer/mit weniger Prüfungen, wenn ich mich nicht schwer irre ;) . Es mag funktionieren, ist aber nicht optimiert, und daher kein gutes Beispiel. DESWEGEN wollte ich es nicht in das template einbauen... (Du darfst mir gerne das Gegenteil beweisen ::) ).
Zwar OT aber kürzer wäre ja z.B.
my $onl = ReadingsVal($name,"online","false") eq "false"?"10px-kreis-rot":ReadingsVal($name,"new_fw","false") eq "true"?"10px-kreis-gelb":"10px-kreis-gruen"
fw true = gelb (wenn neue FW aber offline, dann kein Update)
online true + fw false = grün (web-IF)
online false = rot (offline)
Den Rest könnte man ja lassen. Ich verändere ja quasi auch die Funktion des Kreises.... Was meinst du?
PS: Deine Reihenfolge ist einfach besser und macht das gleiche nur sinniger...stimmt.
Habe nun RAW einfach mal ein Attr weg und wieder rein + Neustart.
Fehler ist weg! Danke!
Was daran komisch ist, die ReadingsList wurde komplett neu gesetzt (zu sehen war das wegen dem ? bei Save config).
Ist mir nicht mal aufgefallen. Der hatte keine ReadingsList. Ich müsste in den Backups nachsehen bis wann diese noch da war. Ohne diese, hätte ich sonst ja auch keine Readings für das Gerät.
Neues List:
Internals:
CFGFN ./FHEM/Tasmota.cfg
CHANGED
CID shelly1_93ABF9
DEF shelly1_93ABF9
DEVICETOPIC az_steckdose_stehlampe
FUUID 5ca5fe80-f33f-fcb4-7344-3a706c54a1f01933
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 34
MQTT2_FHEM_Server_TIME 2019-08-30 12:02:16
MSGCNT 34
NAME az_steckdose_stehlampe
NR 113
STATE off
TYPE MQTT2_DEVICE
READINGS:
2019-08-28 15:07:34 fw_ver 20190821-094851/v1.5.2@4148d2b7
2019-08-28 15:07:34 id shelly1-93ABF9
2019-08-30 12:02:16 input_0 1
2019-08-28 15:07:34 ip 192.168.xxx.xxx
2019-08-28 15:07:34 mac BCDDC293xxxx
2019-08-28 15:07:34 new_fw false
2019-08-30 11:53:46 online true
2019-08-30 12:02:16 relay_0 off
2019-08-29 14:32:18 state off
Attributes:
IODev MQTT2_FHEM_Server
alias Arbeitszimmer Stehlampe Steckdose
devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "false" || ReadingsVal($name,"online","false") eq "false" && ReadingsVal($name,"new_fw","false") eq "true" ? "rot" : ReadingsVal($name,"online","false") eq "true" && ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $light = ReadingsVal($name,"state","off") eq "on"?'light_floor_lamp@green':'light_floor_lamp';; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a> </div>" }
event-on-change-reading .*
group Licht
model A_10_shelly1
readingList shellies/shelly1-93ABF9/online:.* online
shellies/shelly1-93ABF9/relay/0:.* relay_0
shellies/shelly1-93ABF9/input/0:.* input_0
room MQTT
setList relay_0:on,off,toggle shellies/shelly1-93ABF9/relay/0/command $EVTPART1
off:noArg shellies/shelly1-93ABF9/relay/0/command off
on:noArg shellies/shelly1-93ABF9/relay/0/command on
x_update:noArg shellies/shelly1-93ABF9/command update_fw
webCmd :relay_0
Schön, dass der Fehler weg ist :)
(qed: es ist mit einiger Wahrscheinlichkeit entstanden im Zusammenhang mit dem ursprünglichen Kopiervorgang in das include rein...)
Zitat von: 87insane am 30 August 2019, 12:08:03
PS: Deine Reihenfolge ist einfach besser und macht das gleiche nur sinniger...stimmt.
;)
Zitat
Den Rest könnte man ja lassen. Ich verändere ja quasi auch die Funktion des Kreises.... Was meinst du?
Ich hatte vorrangig gesehen, dass die Logik zu umfangreich ist, aber daneben noch den Eindruck, dass man das mit dem Link-Code noch verkürzen könnte, da kam mir auch vieles doppelt (getippt) vor, und dann das Symbol (*grins*)....
Der Spur nach würde ich erst die Farbe ermitteln (nur rot|gelb|grün, den Rest kann man am Ende dazupacken), dann den Link-Teil bei "gelb" anders bestimmen und dann am Ende den gesamten String mit den beiden/allen Variablen zusammenbauen. Ansätze in die Richtung sind schon vorhanden, aber m.E. eben nicht konsequent genug umgesetzt ;) . Habe aber nicht intensiver nachgedacht, gerne können wir das am Ende im anderen Thread vollends finalisieren :) .