Hallo ins Forum,
ich habe leider noch keinen Weg gefunden, wie ich die Befehle zum Adden von Devices und Attributen via Script in fhem einlesen kann. Derzeit kenne ich nur die Eingabe via Kopfzeile, bitte wie geht das eleganter ?
Viele Dank für Eure Hilfe
wollik
Kannst du deine Anfängerfragen bitte ins Anfängerforum verschieben? Das ist eher kein "Heizungssteuerung"-Thema... (Ja, kannst und sollst du selbst!).
Ansonsten wären die Stichworte telnet und "das grüne Plus" (mehrzeiliges Kommandofeld, siehe Einsteiger-Doku/Quick-Start bzw. Event-Monitor im Wiki).
Wobei es auch über http(s) geht. Gibt hier irgndwo im Forum ein Script dafür.
Für FHEM ist es egal, ob damit "set" oder andere Befehle abgesetzt werden.
Was mich aber andererseits interesiert, wofür sollte man extern (per Script) ein Device automatisch anlegen?
Zitat von: Wernieman am 30 Dezember 2020, 12:50:05
Wobei es auch über http(s) geht. Gibt hier irgndwo im Forum ein Script dafür.
Ich vermute, du meinst diesen: https://github.com/heinz-otto/fhemcl
Hallo xenos1984,
ich dachte da an etwas sehr einfachem wie das grüne Plus, aber nicht via Cut and Paste sondern so etwas wie:
"use file /home/pi/config_4_0815"
In der file config_4_0815 steht das gleiche wie in der RAW-Ansicht, wenn das Device vollständig eingerichtet wurde.
Ziel ist es, Devices einfach auf andere Instansen zu addieren.
Vielen Dank für Eure Hilfe
wollik
Sowas geht vermutlich - mit Einschränkungen - auch, wenn man attrTemplate missbraucht...:
Einfach die "externe Config" in das betreffende Verzeichnis packen, für die einzelnen Abschnitte Überschriften ausdenken und dann über irgendeinen TYPE, der attrTemplate unterstützt (nach erneuter Initialisierung des Moduls) den betreffenden Abschnitt auswählen.
Weiß aber nicht, ob das wirklich schneller ist als c&p ;) .
Zitat von: wollik am 30 Dezember 2020, 13:19:20
Hallo xenos1984,
ich dachte da an etwas sehr einfachem wie das grüne Plus, aber nicht via Cut and Paste sondern so etwas wie:
"use file /home/pi/config_4_0815"
In der file config_4_0815 steht das gleiche wie in der RAW-Ansicht, wenn das Device vollständig eingerichtet wurde.
Ziel ist es, Devices einfach auf andere Instansen zu addieren.
Vielen Dank für Eure Hilfe
wollik
Hi,
naja mein kleines Script macht genau das, und genauso einfach. Nur eben im Terminalfenster und nicht im grünen Plus :)
Du kannst eine Raw Definition (dein config_4_0815) per Pipe oder Namen an das Script übergeben und das legt los.
Praktisch habe ich damit schon die komplette fhem.cfg von eine auf die andere Instanz "kopiert". Funktioniert mMn mit allem außer CUL_HM - dort wird das Prinzip "Raw Definition" vom Modul verhindert.
Gruß Otto
Zitatso etwas wie:
"use file /home/pi/config_4_0815"
use file heisst bei FHEM include: https://fhem.de/commandref_modular.html#include
Hallo Otto123,
bitte kannst Du Dein Script für mich/uns hier im Forum bereitstellen?
Danke
wollik
Hallo rudolfkoeig,
D A N K E JA das wäre eine Lösung, ich teste das einmal und gebe dann hier wieder Bescheid.
Viele Grüße
wollik
Zitat von: wollik am 30 Dezember 2020, 18:16:22
Hallo Otto123,
bitte kannst Du Dein Script für mich/uns hier im Forum bereitstellen?
Danke
wollik
Der Link steht schon in #3 ;)
Zitat von: rudolfkoenig am 30 Dezember 2020, 15:10:24
use file heisst bei FHEM include: https://fhem.de/commandref_modular.html#include
Ich habe mir das nochmal genauer angesehen, das ist doch aber eigentlich nicht die Lösung:
ZitatZiel ist es, Devices einfach auf andere Instansen zu addieren.
Die Definition ist bei der Verwendung von include fest in dieser Datei, es ist Teil der cfg. Sie muss durch FHEM bei Änderung der Konfiguration immer erreichbar und schreibbar sein.
Das ist für mich ein völlig andere Level als die Raw Definition (das grüne Plus) - oder habe ich da was übersehen und nicht verstanden?
Kann man eine include Definition in die "normale" Konfig/fhem.cfg verschieben?
ZitatKann man eine include Definition in die "normale" Konfig/fhem.cfg verschieben?
Soweit ich sehe (d.h. ungetestet) wird das Include-File fuers Zurueckschreiben nur dann gemerkt, wenn die include Anweisung waehrend des Startens (d.h. !$init_done) ausgefuehrt wird.
Wenn man solche Definitionen verschieben will, muss man das CFGFN Internal entfernen oder aendern.
ich habe es nochmal versucht nachzustellen:
die Datei gehört pi und ist von fhem nicht beschreibbar
include /home/pi/test.cfg
Ergebnis
Internals:
CFGFN /home/pi/test.cfg
DEF 16AB83
FUUID 5ffee598-f33f-457b-a7a2-4482368d27a907b1
IODev
NAME SD3
NOTIFYDEV global
NR 799
NTFY_ORDER 50-SD3
STATE ???
TYPE CUL_HM
chanNo 01
peerList 16949F02,
READINGS:
2021-01-13 13:20:46 D-firmware 1.9
2021-01-13 13:20:46 D-serialNr IEQ0073533
2021-01-13 13:20:46 peerList 16949F02,
helper:
HM_CMDNR 210
mId 0002
peerFriend peerSens,peerVirt
peerOpt 3:switch
regLst 0,1,3p
rxType 1
cmds:
TmplKey 16949F02,:no:1610540446.03023
TmplTs 1610540446.03023
cmdKey 1:1:0::SD3:0002:01:16949F02,
cmdLst:
assignHmKey noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
eventL -peer- -cond-
eventS -peer- -cond-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
getVersion noArg
inhibit [(on|{off})]
off noArg
on noArg
on-for-timer -ontime-
on-till -time-
pair noArg
peerBulk -peer1,peer2,...- [({set}|unset)]
peerIODev [IO] -btn- [({set}|unset)] 'not for future use'
peerSmart -peerOpt-
press [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
pressL [(-peer-|{self01})]
pressS [(-peer-|{self01})]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
statusRequest noArg
toggle noArg
tplDel -tplDel-
unpair noArg
lst:
condition slider,0,1,255
peer 16949F02
peerOpt remove_16949F02
tplDel
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 0
tpl 0
io:
newChn +16AB83,00,00,00
prefIO
rxt 0
vccu VCCU
p:
16AB83
00
00
00
mRssi:
mNo
prt:
bErr 0
sProc 0
q:
qReqConf 00
qReqStat 00
role:
chn 1
dev 1
prs 1
tmpl:
Attributes:
IODev HMLAN1
IOgrp VCCU
autoReadReg 4_reqStatus
devStateIcon off:black_Steckdose.off on:black_Steckdose.on
event-on-change-reading .*
expert defReg
firmware 1.9
model HM-LC-SW1-PL
peerIDs 00000000,16949F02,
room Arbeitszimmer
serialNr IEQ0073533
subType switch
webCmd statusRequest:toggle:on:off
und im Dialog zwei Fehler weil er zwei Zeilen wegen Beschränkung des CUL_HM Moduls nicht nehmen will.
Bei einem save, bekomme ich einen Fehler: cannot open /home/pi/test.cfg permission denied
Wie würde ich denn das Internal CFGFN löschen und FHEM dazu bewegen diese importierte config in fhem.cfg zu integrieren?
Das wäre ein schicker Weg um dieses leidige Problem des CUL_HM Moduls, dass man Raw Definitionen nur modifiziert übernehmen darf, zu umgehen. Es kommt zwar der Fehler das zwei Werte nicht übernommen werden, er macht es aber trotzdem :)
ZitatWie würde ich denn das Internal CFGFN löschen und FHEM dazu bewegen diese importierte config in fhem.cfg zu integrieren?
{ delete($defs{SD3}{CFGFN}) }
Danke, das funktioniert. Danach gibt es kein rotes Fragezeichen, wenn man aber Save config macht, steht diese DEF anschließend in der config :)
Verräts Du mir noch bitte warum 12 meiner Definitionen eine leeres Internal CFGFN haben und alle haben keins? Ich sehe da kein Schema :-[
Weiss auf Anhieb nicht, muesste es debuggen.
Das kannst Du aber viel besser, du bist im Besitz der Konfiguration, was dieses Verhalten ausloest.