FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: JoeALLb am 18 April 2017, 11:50:15

Titel: [workaround] Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 11:50:15
Hallo,

ich möchte von einem Device das Userreading auf ein anderes kopieren.
Das klappt mit einfachem Code, sobald jedoch eine Kombination aus Newline, etc. vorhanden ist
klappt dies leider nicht mehr.

Den Code, den ich zum kopieren nutzen möchte ist:
{fhem("attr dummy2 userReadings ".AttrVal("dummy1","userReadings",""))}


Ein Beispiel für solch einen Dummy wäre:

define dummy2 dummy
define dummy1 dummy
attr dummy1 room 3_Bastelecke
attr dummy1 userReadings tmp {\
my $xx= "xx";;\
# kommentar;;\
return "1"\
\
}


Ale Fehlermeldung erhalte ich immer
Unknown command #, try help.
Unknown command return, try help.


Gibt es eine interne "escape"-Funktion, die ich nutzen kann?

sG
Joe
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: Otto123 am 18 April 2017, 12:18:19
Hi,

verwende doch einfach die Raw definition. Kopiere nicht direkt aus der fhem.cfg.
Wenn es nur ein einzelnes Userreading ist funktioniert auch der integrierte FHEM Editor ohne Probleme.

Oder ich habe den Zweck mal wieder nicht verstanden.

Gruß Otto
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 12:25:13
Hallo Otto,

danke fürs mitdenken, da ich das jedoch zigfach automatisiert an mehrere Devices übergeben muss, hilft mir der FHEM-Editor wenig...
Auch die RAW-Befehle helfen mir hier nicht...

Im Endausbau suche ich sogar die Möglichkeit, das per devspec direkt an mehrere Devices übergeben zu können um eine gewisse Vereinheitlichung zu bekommen,
das kann ich dann aber auch per Perl erreichen.Wichtig für mich ist im Moment eine Möglichkeit zu finden, wie ich solch ein Atribut 1:1 kopieren kann.
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: Otto123 am 18 April 2017, 12:29:27
naja wenn Du es sowieso "nicht liest" muss es auch nicht hübsch sein. Dann würde ich die Zeilenumbrüche im Code einfach weglassen.
Ich weiß - ist jetzt ein dürftiger Ansatz  ;)

Die Jokerfrage wäre: sind die \ von Dir? Also sieht man die auch im Editor?
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: dev0 am 18 April 2017, 12:57:12
Zitat von: JoeALLb am 18 April 2017, 11:50:15
Ale Fehlermeldung erhalte ich immer
Unknown command #, try help.
Unknown command return, try help.


Wenn das Problem tatsächlich nur an der Kommentarzeile liegt, dann entweder keine Kommentare verwenden oder den Code in eine 99_myUtils.pm auslagern.
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: igami am 18 April 2017, 13:20:19
zwar immer noch beta, aber guck dir mal mein archetype modul an, das macht das was du möchtest.
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 14:00:41
Zitat von: igami am 18 April 2017, 13:20:19
zwar immer noch beta, aber guck dir mal mein archetype modul an, das macht das was du möchtest.
Puh, aber "einfach" macht es das Modul auch nicht gerade... Aber immerhin, es funktioniert!.
Wenn ich nun aber mehrere (viele) Quellen angeben möchte, ist mir dieser Ansatz eigentlich nicht stimmig genug.
Ich möchte keine neuen zusätzlichen Devices anlegen müssen, ich mögte lediglich ein Attribut, egal welche (funktionierenden!) Sonderzeichen es enthält, kopieren können.

Wie sieht es mit dem %attr-Hash aus? Empfohlen ist dieser lt. https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Attribute zwar auch nicht,
aber hat damit jemand Erfahrung?
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 14:02:37
Zitat von: Otto123 am 18 April 2017, 12:29:27
naja wenn Du es sowieso "nicht liest" muss es auch nicht hübsch sein. Dann würde ich die Zeilenumbrüche im Code einfach weglassen.
[...]
Die Jokerfrage wäre: sind die \ von Dir? Also sieht man die auch im Editor?
Der Code ändert sich häufiger, da sind Formatierungen für mich schon sehr hilfreich!
die \ kommen aus der FHEM-Oberfläche, indem man unten auf "RAW definition" klickt.
Ich denke, ein simples escapen von Newlines reicht hier nicht aus, oder?
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: Otto123 am 18 April 2017, 14:06:40
Wie dev0 schont gesagt hat, das Problem sind wahrscheinlich gar nicht die \ sondern der Kommentar #.
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 14:25:20
Zitat von: Otto123 am 18 April 2017, 14:06:40
Wie dev0 schont gesagt hat, das Problem sind wahrscheinlich gar nicht die \ sondern der Kommentar #.
Wenn ich die Kommentarzeile im Beispiel entferne, geht es immer noch nicht. Es hängt also schon mit mehreren Parametern zusammen...

Der FHEM-Editor müsste doch beim Abspeichern eine den Code Escapen... kann da nicht einfach die selbe Funktion für diesen
Fall verwendet werden? Leide rhabe ich diese im Code jedoch nicht gefunden...
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: igami am 18 April 2017, 14:52:01
Zitat von: JoeALLb am 18 April 2017, 14:00:41
Puh, aber "einfach" macht es das Modul auch nicht gerade... Aber immerhin, es funktioniert!.
Wenn ich nun aber mehrere (viele) Quellen angeben möchte, ist mir dieser Ansatz eigentlich nicht stimmig genug.
Ich möchte keine neuen zusätzlichen Devices anlegen müssen, ich mögte lediglich ein Attribut, egal welche (funktionierenden!) Sonderzeichen es enthält, kopieren können.
aber hat damit jemand Erfahrung?
Vorteil von dem Modul, es vererbt immer wieder wenn neue devices hinzukommen.

Was ich noch nicht verstanden habe, was meinst du mit mehreren Quellen?
Alternativ, guck dir mal das Template Modul an, ist ählich zum archetype modul, nur anders :D
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: Otto123 am 18 April 2017, 14:54:03
Ich bleibe mal bei deinem Beispiel: leere Leerzeilen mag FHEM auch manchmal nicht in Definitionen ->
return "1"\
\
}

->
return "1"}

Aber Du willst eh was ganz anderes, ich kann Dir leider nicht helfen.

Viel Erfolg
Otto
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 16:23:36
Eine Erweiterung des COPY-Befehls wurde hier auch schon mal ins Spiel gebracht....
https://forum.fhem.de/index.php/topic,68455.msg601271.html#msg601271

Leider ist auch das Template-Modul nicht das, was ich suche.
Im Endeffekt läuft die gesuchte Möglichkeit von mir darauf hinaus, dass ich ein
copyAttr, oder ein copy mit Attributen als Parameter benötigen würde.

Leider verstehe ich den Code von 98_copy.pm nicht ausreichend, um mir eine auf Attribute angepasste Version davon zu machen...
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: Ellert am 18 April 2017, 16:30:15
Wenn alles andere nicht hilft, geht es so
{$attr{dummy2}{userReadings} = $attr{dummy1}{userReadings}}

siehe https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Attribute
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 18 April 2017, 16:36:57
Zitat von: Ellert am 18 April 2017, 16:30:15
Wenn alles andere nicht hilft, geht es so

Perfekt, vielen Dank, das ist genau das, was mir hier hilft!!
Titel: Antw:Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 14 Mai 2018, 14:58:54
Zitat von: Ellert am 18 April 2017, 16:30:15
Wenn alles andere nicht hilft, geht es so
{$attr{dummy2}{userReadings} = $attr{dummy1}{userReadings}}

siehe https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Attribute

Hallo Ellert,

nachfrage: geänderte userReeadings scheinen erst nach einem Shutdown-Restart zu funktionieren. (Ist mir bisher nicht aufgefallen...)
Als Text wird der korrekte angezeigt! in fhemweb auf "dev" und danach auf "modify" klicken hilft auch!
Bis dahin scheinen die alten ihr Wert zu vollbringen. Muss man ggf. noch etwas "neu einlesen", oder reinitialisieren, bevor das funktioniert?

sG
Joe
Titel: Antw:[workaround] Attribut mit Newlines kopieren geht nicht
Beitrag von: Ellert am 20 Mai 2018, 16:49:37
So, wie Du es beschreibst, vermutlich ja.
Titel: Antw:[workaround] Attribut mit Newlines kopieren geht nicht
Beitrag von: JoeALLb am 20 Mai 2018, 17:47:20
Zitat von: Ellert am 20 Mai 2018, 16:49:37
So, wie Du es beschreibst, vermutlich ja.
Nur leider finde ich aus dem Code heraus mit meinen Perlkenntnissen nicht genau, was.... wenn jemand eine Idee dazu hat kann er gerne die Sub oder die Codezeile posten, dann komme ich vielleicht alleine weiter....
Titel: Antw:[workaround] Attribut mit Newlines kopieren geht nicht
Beitrag von: Ellert am 20 Mai 2018, 19:16:00
fhem "save;;shutdown restart";