Beim Versuch, ein mehrzeiliges DOIF, dass mit exportdevice testdi quote
exportiert wurde über "Raw definition" zu importieren, gibt es eine Fehlermeldung (testdi DOIF: no left bracket of condition:).
Das Verhalten kann mit dem im DEF-Editor erstellten DOIF nachgestellt werden.
define testdi DOIF ##1
([0])
dann in der Eingabezeile des FHEMWEB-Frontends
exportdevice testdi quote
und die Ausgabe der Definition kopieren und Raw definition öffnen, den Inhalt löschen, die kopierte Ausgabe einfügen, define in defmod ändern und Execute commands drücken.
Bei der Ausgabe von exportdevice im Frontend oder bei der Darstellung der Ausgabe wird an jede Zeile ein Leerzeichen angehängt, das bei mehrzeiligen DOIF-Definitionen zu Import-Fehlermeldungen führt.
Wäre es möglich den Export, Ausgabe im Frontend und Import zu harmonisieren? Andernfalls müsste man die Ausgabe in einen Editor kopieren und jeweil das letzte Leerzeichen jeder Zeile entfernen.
Bei mir funktioniert ein Export/Import, wenn ich ausschliesslich ueber FHEMWEB/Raw definition gehe.
Gibt es einen Grund, mit exportdevice zu exportieren und mit Raw-Definition zu importieren?
Ja, wenn man Codebeispiele "ready to run" zur Verfügung stellen möchte, dann kann man mit exportdevice <defspec> dependent quote
alle dazu gehörenden Geräte auf einmal exportieren.
Daher wäre es schön, wenn die störenden Leerzeichen beseitigt werden.
Noch besser wäre es, wenn exportdevice eine Option reallyflat hätte und nur Code ausgegeben würde. Oder, wenn Raw device auch alle abhängigen Geräte anzeigen würde, wäre es auch gut.
Dann könnte man so etwas auf einen Schlag importfähig exportieren
define schrittSchalterDOIF DOIF ## 1 \
(["taster1ext:short"] and $cmd=~"0|4") \
(set lampe1 on)\
## 2\
DOELSEIF (["taster1ext:short"] and $cmd==1) \
(set lampe2 on, set lampe1 off)\
## 3\
DOELSEIF (["taster1ext:short"] and $cmd==2) \
(set lampe(1|2) on)\
## 4\
DOELSEIF (["taster1ext:short"] and $cmd==3) \
(set lampe(1|2) off)
attr schrittSchalterDOIF cmdState Schritt 1|Schritt 2|Schritt 3|Schritt 4
attr schrittSchalterDOIF group Schrittschalter
attr schrittSchalterDOIF room DOIF Labor
define lampe1 dummy
attr lampe1 group Schrittschalter
attr lampe1 room DOIF Labor
define lampe2 dummy
attr lampe2 group Schrittschalter
attr lampe2 room DOIF Labor
define taster1ext dummy
attr taster1ext group Schrittschalter
attr taster1ext room DOIF Labor
attr taster1ext setList short long
attr taster1ext webCmd short:long
Ich verstehe nicht, wofür man exportdevice überhaupt benötigt. Es gibt doch die RAW-Definition!?
@Rudi: Könnte man das nicht wieder ausbauen? Es ist mEn redundant.
@marvin78
Mit exportdevice kann man mit einem Schlag alle abhängigen Geräte mit exportieren, indem die option dependent verwendet wird.
Das ist dann sinnvoll, wenn in einer Definition mehrere Geräte zitiert werden, wie z.B. beim DOIF oder notify. Würde man Raw definition verwenden, dann müsste man für jedes abhängige Gerät die Geräteansicht aufrufen und einzeln exportieren.
Was ist daran redundant?
Redundanz ist kein Übel, sondern erhöht die Vielfältigkeit. Sonst könnte man auch notify ausbauen, weil es DOIF gibt ;)
Es gibt sich auch noch list -r. Wenn ich das richtig in Erinnerung habe hat das auch gut funktioniert als ich mein fhem vom cubietruck auf das pi 3 umgezogen habe.
Zitat von: Ellert am 13 November 2016, 09:12:31
Redundanz ist kein Übel, sondern erhöht die Vielfältigkeit. Sonst könnte man auch notify ausbauen, weil es DOIF gibt ;)
Du hast notify und DOIF nicht verstanden. Da ist nichts redundant. DOIF ist aber in der Tat nicht unbedingt nötig, da man alles was DOIF kann, auch anders abbilden könnte. Das ist aber OT.
Das mit den abhängigen Geräten funktioniert ohnehin nicht zuverlässig (bzw. garnicht) wenn man RegEx verwendet. Im Grunde muss man immer noch schauen, ob man alles erwischt hat. Ich halte exportdevice weiterhin für überflüssig.
In der sub "CommandExportdeviceGetBlock" sollten die Ersetzungen unter den Kommentaren "# device definition" und "# device attributes" nicht mit "\n" erfolgen sondern mit "\r". Dann werden im WEB-Frontend keine Leerzeichen angehängt und die Ausgabe von "exportdevice" passt zum Import mit "Raw definition."
Anliegend die angepasste Datei.
Habe jetzt ein 'Dump "Probably associated with" too' checkbox in FHEMWEB eingebaut, sichtbar wenn man 'Raw definition' aufklappt.
Vielen Dank fürs Einbauen, das weckt leider neue Begehrlichkeit.
Wäre es auch möglich Devices über eine Regex und Filter auflisten zu lassen, wie <devspec>, dann könnte sowas, wie group=ABC gefiltert werden?
Das ueberlassen wir mal exportdevice. Ich will "Raw definition" einfach halten....