Es wäre eventuell hilfreich, wenn man devices im Web-Frontend mit all ihren Eigenschaften kopieren könnte. Es greift ja aktuell die sehr sinvvolle Einsicht, dass man nicht mehr direkt in der *.cfg editiert. Es gibt jedoch häufig den Fall, dass ich mir Dummys mit vielen sinnvollen Attributen angelegt habe und ein weiteres Dummy oder anderes Device mit den gleichen Eigenschaften benötige. Habe ich etwas übersehen oder, andernfalls, wäre sowas zu realisieren?
Coole Idee :)
Mit meiner "Konfiguration per Datenbank" liesse sich das völlig simpel umsetzen.
Alle Zeilen von <deviceA> auslesen und als neue Zeilen für <deviceB> einfügen.
Ich glaub, ich werde heute abend eine neue Funktion basteln, die das macht ...
Ja, ich weiß, das geht natürlich auch innerhalb von fhem mit der fhem.cfg ;)
Ich finde den Ansatz, es auch für die fhem.cfg anzubieten, auch sehr interessant. War das letzte mal, das ich in der fhem.cfg "rumgeschmiert" habe, da ich ein notify, was ich für verschiedene Devices brauchte, nicht X-Mal in FHEM eintippern wollte ....
wobei .. Deine Datenbanklösung wollte ich mir auch angucken ... wenn die Zeit nicht zu knapp wäre ;o)
Um das Arbeiten in der .cfg vollständig abzulösen, sollte der DEF-Editor aber gegen einen "echten" Code-Editor ausgetauscht werden. Wenn man mehr als ein oder zwei Zeilen schreibt, ist Syntax-Highlighting und Klammernmatching schon sehr hilfreich.
Ließe sich vielleicht so was wie hier
http://codemirror.net/
einbinden ?
Das müsstest Du bitte hier im Forumbereich "Frontends" fragen, denn dort wird das fhem-Frontend 01_FHEMWEB.pm abgehandelt, das dafür geändert werden muss.
Das reine kopieren eines devices (um das es hier im Thread geht) ist eher eine Frage der Backend-Programmierung.
ok, den Vorschlag, das innerhalb der Datenbankkonfiguration zu machen, nehme ich zurück. Das funktioniert zwar (gerade getestet) aber es macht an dieser Stelle keinen Sinn. Ich habe mal wieder viel zu komplex gedacht.
Da fhem sämtliche definierten devices in einer internen Tabelle vorhält, gehört das Kopieren eindeutig in die fhem.pl und ist völlig unabhängig von der Art der Konfiguration (also egal ob Konfigurationsdatei oder Datenbank)
ich hab nur gewartet bis du drauf kommst :)
gruss
andre
Ich wusste das eigentlich schon - aber in der Datenbanklösung ist das Ganze ein Zweizeiler - in der fhem.pl dürften zwei Zeilen dafür nicht reichen 8)
ZitatUm das Arbeiten in der .cfg vollständig abzulösen, sollte der DEF-Editor aber gegen einen "echten" Code-Editor ausgetauscht werden.
Ich mache mich gleich bestimmt unbeliebt, aber ich möchte weiterhin direkt in dem Config eingreifen dürfen ;)
Da bin ich schneller und habe besseren Übersicht als bei bvei dieser stückweisen Fummelei ;D
Du MUSST doch eine solche Funktion nicht nutzen. Und solange Du nicht auf "save" klickst, passiert in Deiner Konfiguration überhaupt nichts persistentes.
Zitat von: justme1968 am 18 Februar 2014, 20:12:23ich hab nur gewartet bis du drauf kommst :)
Eigentlich wäre doch in der fhem.pl eine CommandCopy($$) identisch zur CommandRename($$) ausser den drei Löschbefehlen?
im prinzip ja. das DoTrigger muss noch von RENAMED in COPYED umbenannt werden.
der eigentliche knackpunkt ist aber das es einige devices gibt die nicht mehrfach für das gleiche physikalische device angelegt werden dürfen. z.b. alle die den defptr mechanismus verwenden.
ich glaube die 'richtige' lösung sollte über define oder modify gehen und anschliessend attribute setzen.
dann hat das modul die kontrolle oben das kopieren logisch überhaupt geht.
Oder man überlegt sich, für welche Typen ein Kopieren überhaupt Sinn macht und weist jeden anderen Kopierversuch direkt ab.
Ich denke, die meisten Kopieraktivitäten wären wohl bei notify, at und dummy zu erwarten.
Bei allen IO-Typen würde ich auch sagen, das muss nicht sein.
Zu den 3 genannten würde ich noch dummy und watchdog nehmen wobei es beim watchdog schon kompliziert wird.
und der dummy ist schon einer von den dreien 8)
Äh ja. Es ist spät. Ich muss den Schreibtisch wohl mal langsam verlassen ;)
Zitat von: betateilchen am 20 Februar 2014, 19:32:07Ich denke, die meisten Kopieraktivitäten wären wohl bei notify, at und dummy zu erwarten.
Für readingsGroups wäre das auch sehr hilfreich. Wünsche mir eine solche Funktion seit ich FHEM nutze. :)
so... hier mal ein erster versuch für ein copy kommando.
einfach nach .../FHEM kopieren und dann so aufrufen:copy <orig name> <copy name>
gruss
andre
hab gerade ein paar dummys kopiert, funktioniert.
Zitat von: justme1968 am 18 Mai 2014, 14:02:55
einfach nach .../FHEM kopieren und dann so aufrufen:copy <orig name> <copy name>
Mit einer kleinen Änderung kann man auch andere Devices kopieren:
- my $cmd = "$args[1] $d->{TYPE}";
+ my $cmd = "$args[1] $d->{TYPE} ";
Edit: Ich hatte Probleme beim DEF, das hat er direkt an den TYPE geklatscht.
Gruß
Gerd
Erst einmal Danke für den Copy Befehl Andre :-)
Ich wollte den folgenden Scheduler kopieren.
Internals:
DEF *{sunset(-6500,"17:00","22:00")} {
if (Value("HomeStatus") < 3 && Value("config_twilight_auto_main") eq "on") {
if (Value("Anwesenheit") eq "present") {
fhem("set FS20_sender_taste_2 on");
sendmsg 'Automatische Dämmerungsschaltung (Lampen) eingeschaltet!';
}
else {
Log(4,"Automatische Dämmerungschaltung: Es war niemand zuhause - ignoriere die Schaltung!");
}
}
else {
sendmsg 'Hinweis: Automatische Dämmerungsschaltung (Lampen) ist deaktiviert!';
}
}
NAME at_LED_Deckenbeleuchtung_Auto
NR 872
NTM 20:15:00
REP -1
STATE Next: 20:15:00
TRIGGERTIME 1400436900
TRIGGERTIME_FMT 2014-05-18 20:15:00
TYPE at
Attributes:
room _Cron
Leider bekomme ich eine Fehlermeldung!
copy at_LED_Deckenbeleuchtung_Auto at_Haustuerbeleuchtung_Auto
Unknown module at*{sunset(-6500,"17:00","22:00")}
Mache ich etwas falsch?
Den Fehler hatte ich auch, habe darauf noch ein Leerzeichen im Modul eingefügt.
ja. das fehlende leerzeichen war ein flüchtigkeitsfehler bei der letzten änderung. es muss aber eigentlich in die nächste zeile. sonst sind die dummys keine genauen kopien mehr.
ich hab die version oben noch mal aktualisiert. jetzt sollte es mit jedem device gehen das mehrfach vorhanden sein kann.
gruss
andre
Zitat von: justme1968 am 18 Mai 2014, 17:39:02
ja. das fehlende leerzeichen war ein flüchtigkeitsfehler bei der letzten änderung. es muss aber eigentlich in die nächste zeile. sonst sind die dummys keine genauen kopien mehr.
ich hab die version oben noch mal aktualisiert. jetzt sollte es mit jedem device gehen das mehrfach vorhanden sein kann.
gruss
andre
Geil hat geklappt! Super vielen lieben Dank!
wenn es mehr interessenten als gegenstimmen gibt würde ich es demnächst einchecken.
gruss
andre
;) Dafür!
Gerade ausprobiert, funktioniert super!
Danke!
Hallo,
Zitatwenn es mehr interessenten als gegenstimmen gibt würde ich es demnächst einchecken.
Ich hab es zwar noch nicht benutzt aber was nicht ist kann noch werden ;)
Also DAFÜR!
Grüße
dummys,at,notify,devices eigener module erfolgreich kopiert.
dafür!
Auf jeden Fall DAFÜR
Ich musste allerdings auch diese Änderung machen
Zitat von: stromer-12 am 18 Mai 2014, 17:14:47
- my $cmd = "$args[1] $d->{TYPE}";
+ my $cmd = "$args[1] $d->{TYPE} ";
Klasse Arbeit, dass hab ich schon lange vermisst.
Danke
Super. Genau so hatte ich mir das vorgestellt. Danke!
Für Einchecken!
ich habs mal eingecheckt: http://forum.fhem.de/index.php/topic,23738.0.html (http://forum.fhem.de/index.php/topic,23738.0.html)
gruss
andre
Wäre es möglich, das so umzustricken, dass man nach dem Copy sofort in der Device-Übersicht der Kopie landet?
der redirect passiert im 01_FHEMWEB. ich schlage rudi mal einen patch vor. ich weiss aber nicht ob er damit einverstanden ist.
gruss
andre
edit: der patch ist hier zu finden: http://forum.fhem.de/index.php/topic,23759.0.html (http://forum.fhem.de/index.php/topic,23759.0.html)
Wenn nicht, wäre das auch in Ordnung. Es wäre eben aber extrem praktisch in der Kopie zu landen, da man die notwendigen Modifikationen der Kopie in 99% der Fälle sicher sofort vornimmt UND, falls man das alias-Attribut verwendet, in der Raumübersicht nicht immer auf den ersten Blick sehen kann, welches die Kopie ist.
geht ab morgen.
gruss
andre
Sehr schön. Danke!