fhem via Script steuern und Devices adden

Begonnen von wollik, 30 Dezember 2020, 12:17:31

Vorheriges Thema - Nächstes Thema

wollik

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

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

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?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

xenos1984

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

wollik

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

Beta-User

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 ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Zitatso etwas wie:
"use file /home/pi/config_4_0815"
use file heisst bei FHEM include: https://fhem.de/commandref_modular.html#include

wollik

Hallo Otto123,
bitte kannst Du Dein Script für mich/uns hier im Forum bereitstellen?

Danke
wollik

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

Otto123

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 ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

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.

Otto123

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 :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

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}) }