Hallo,
komme irgendwie nicht weiter.
Wollte mir eine kleine Funktion zum Anlegen von virtuellen Fensterkontakten schreiben.
sub createVirtWsens($){
my ($NAME) = @_;
# zufällige HMID zwische 1 und FFFFFF erzeugen
my $HMID = sprintf("%06X", rand(hex("FFFFFF"))+1);
# prüfen ob es die HMID schon einmal gibt
my @devids = devspec2array("TYPE=CUL_HM:FILTER=DEF=$HMID");
my @exiid = grep($HMID, @devids);
if (grep($HMID, @devids)) {
return "HMID $HMID wird schon für @exiid verwendet";
}
if (defined($defs{"HM_SEC_VIRT_$NAME"})) {
return "Device HM_SEC_VIRT_$NAME wird schon verwendet";
}
fhem("define HM_SEC_VIRT_".$NAME." CUL_HM ".$HMID);
fhem("attr HM_SEC_VIRT_".$NAME." model VIRTUAL");
fhem("attr HM_SEC_VIRT_".$NAME." room 0_LAB");
if (defined($defs{"HM_SEC_VIRT_$NAME"})) {
fhem("set HM_SEC_VIRT_".$NAME." virtual 1");
}
}
Es läuft immer auf "Unknown argument virtual, choose one of ..." hinaus.
Soweit ich das verstehe "kennt" Perl/FHEM das Device nicht vollständig.
Rufe ich nach dem anlegen eine Funktion fhem("set HM_SEC_VIRT_".$NAME." virtual 1");
auf, geht es.
Kann ich das Device aus Perl "neu laden"?
Gruß
Thomas
weil noch kein attr subtype existiert?
Hi,
danke.
Wenn ich vorher
fhem("attr HM_SEC_VIRT_".$NAME." subType virtual");
ausführe ändert sich nichts.
Gruß
Thomas
probiere mal so:
define
attr modeForce VIRTUAL
set vitual 1
Leider auch kein Erfolg
zeig ein list
was steht in fhem.log?
LOG
2023.02.11 20:09:22.880 3: set HM_SEC_VIRT_doof virtual 1 : Unknown argument virtual, choose one of reset:noArg regBulk clear:msgErrors,noArg,msgEvents,rssi,attack,trigger,register,oldRegs,readings,all assignHmKey:noArg raw fwUpdate peerChan getRegRaw getDevInfo:noArg getConfig:noArg peerSmart:HM_LED_RGB_Kueche_Auto,HM_LED_RGB_Kueche_Color,HM_LED_RGB_Kueche_Dim,HM_RT_Bad_WindowRec,HM_RT_Bad_remote,HM_RT_Diele_WindowRec,HM_RT_Diele_remote,HM_RT_Kueche_WindowRec,HM_RT_Kueche_remote,HM_RT_Mansarde_WindowRec,HM_RT_Mansarde_remote,HM_RT_Schlafzimmer_WindowRec,HM_RT_Schlafzimmer_remote,HM_RT_Wohnzimmer_WindowRec,HM_RT_Wohnzimmer_remote,HM_Remote_Btn_01,HM_Remote_Btn_02,HM_Remote_Btn_03,HM_Remote_Btn_04,HM_Remote_Btn_05,HM_Remote_Btn_06,HM_Remote_Btn_07,HM_Remote_Btn_08,HM_SEC_Bad_Dachfenster,HM_SEC_Bad_Tuer,HM_SEC_Diele_Tuer,HM_SEC_Kueche_Dachfenster,HM_SEC_Kueche_Fenster_1,HM_SEC_Kueche_Fenster_2,HM_SEC_Kueche_Fenster_3,HM_SEC_Kueche_Tuer,HM_SEC_Mansarde_Fenster_1,HM_SEC_Mansarde_Fenster_2,HM_SEC_Mansarde_Tuer,HM_SEC_Schlafzimmer_Fenster_1,HM_SEC_Schlafzimmer_Fenster_2,HM_SEC_Schlafzimmer_Tuer,HM_SEC_Wohnzimmer_Fenster_1,HM_SEC_Wohnzimmer_Fenster_2,HM_SEC_Wohnzimmer_Tuer,HM_SW_Kueche_Tisch_SenF,HM_SW_Kueche_Tisch_SenI,HM_SW_Kueche_Tisch_SenPwr,HM_SW_Kueche_Tisch_SenU,HM_SW_Kueche_Tisch_sw,HM_SW_Mansarde_Tauchen_SenF,HM_SW_Mansarde_Tauchen_SenI,HM_SW_Mansarde_Tauchen_SenPwr,HM_SW_Mansarde_Tauchen_SenU,HM_SW_Mansarde_Tauchen_sw,HM_TC_Bad_WindowRec,HM_TC_Bad_remote,HM_TC_Kueche_WindowRec,HM_TC_Kueche_remote,HM_TC_Mansarde_WindowRec,HM_TC_Mansarde_remote,HM_TC_Schlafzimmer_WindowRec,HM_TC_Schlafzimmer_remote,HM_TC_Wohnzimmer_WindowRec,HM_TC_Wohnzimmer_remote,HM_VIRT_Bad_Dachfenster,HM_VIRT_Bad_Tuer,HM_VIRT_Kueche_Tuer,HM_VIRT_Schlafzimmer_Tuer,HM_VIRT_Wohnzimmer_Tuer regSet postEvent:slider,0,1,255 press unpair:noArg peerBulk deviceRename
LIST
define HM_SEC_VIRT_doof CUL_HM F9BB34
attr HM_SEC_VIRT_doof userattr structexclude winOpen winOpen_map
attr HM_SEC_VIRT_doof .mId FFF1
attr HM_SEC_VIRT_doof DbLogExclude .*
attr HM_SEC_VIRT_doof model VIRTUAL
attr HM_SEC_VIRT_doof modelForce VIRTUAL
attr HM_SEC_VIRT_doof room 0_LAB
attr HM_SEC_VIRT_doof subType virtual
attr HM_SEC_VIRT_doof webCmd virtual
# CFGFN
# DEF F9BB34
# FUUID 63e7e7e2-f33f-c08c-641f-5eb2f66e8d2c93d1
# IODev
# NAME HM_SEC_VIRT_doof
# NR 5716
# NTFY_ORDER 48-HM_SEC_VIRT_doof
# STATE ???
# TYPE CUL_HM
# chanNo 01
# disableNotifyFn 1
# READINGS:
# helper:
# HM_CMDNR 230
# mId FFF1
# peerFriend peerSD,peerSens,peerAct
# peerOpt -:virtual
# regLst 0
# rxType 1
# cmds:
# TmplKey :no:1676142567.69586
# TmplTs 1676142567.69586
# cmdKey 1:1:1::HM_SEC_VIRT_doof:FFF1:01:
# cmdLst:
# assignHmKey noArg
# clear [(readings|rssi|msgEvents|attack|{msgErrors}|unknownDev)]
# deviceRename -newName-
# fwUpdate -filename- [-bootTime-]
# getDevInfo noArg
# peerChan -btnNumber- -actChn- [({single}|dual|reverse)] [({set}|unset)] [(actor|remote|{both})]
# peerSmart -peerOpt-
# postEvent -condition-
# press [(long|{short})] [(-peer-|{all})] [(noBurst|{Burst})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
# pressL [(-peer-|{all})]
# pressS [(-peer-|{all})]
# raw -data- [...]
# reset noArg
# tplSet_0 -tplChan-
# unpair noArg
# virtual [(1..50;1|{1})]
# lst:
# condition slider,0,1,255
# peer
# peerOpt HM_LED_RGB_Kueche_Auto,HM_LED_RGB_Kueche_Color,HM_LED_RGB_Kueche_Dim,HM_RT_Bad_WindowRec,HM_RT_Bad_remote,HM_RT_Diele_WindowRec,HM_RT_Diele_remote,HM_RT_Kueche_WindowRec,HM_RT_Kueche_remote,HM_RT_Mansarde_WindowRec,HM_RT_Mansarde_remote,HM_RT_Schlafzimmer_WindowRec,HM_RT_Schlafzimmer_remote,HM_RT_Wohnzimmer_WindowRec,HM_RT_Wohnzimmer_remote,HM_Remote_Btn_01,HM_Remote_Btn_02,HM_Remote_Btn_03,HM_Remote_Btn_04,HM_Remote_Btn_05,HM_Remote_Btn_06,HM_Remote_Btn_07,HM_Remote_Btn_08,HM_SEC_Bad_Dachfenster,HM_SEC_Bad_Tuer,HM_SEC_Diele_Tuer,HM_SEC_Kueche_Dachfenster,HM_SEC_Kueche_Fenster_1,HM_SEC_Kueche_Fenster_2,HM_SEC_Kueche_Fenster_3,HM_SEC_Kueche_Tuer,HM_SEC_Mansarde_Fenster_1,HM_SEC_Mansarde_Fenster_2,HM_SEC_Mansarde_Tuer,HM_SEC_Schlafzimmer_Fenster_1,HM_SEC_Schlafzimmer_Fenster_2,HM_SEC_Schlafzimmer_Tuer,HM_SEC_Wohnzimmer_Fenster_1,HM_SEC_Wohnzimmer_Fenster_2,HM_SEC_Wohnzimmer_Tuer,HM_SW_Kueche_Tisch_SenF,HM_SW_Kueche_Tisch_SenI,HM_SW_Kueche_Tisch_SenPwr,HM_SW_Kueche_Tisch_SenU,HM_SW_Kueche_Tisch_sw,HM_SW_Mansarde_Tauchen_SenF,HM_SW_Mansarde_Tauchen_SenI,HM_SW_Mansarde_Tauchen_SenPwr,HM_SW_Mansarde_Tauchen_SenU,HM_SW_Mansarde_Tauchen_sw,HM_TC_Bad_WindowRec,HM_TC_Bad_remote,HM_TC_Kueche_WindowRec,HM_TC_Kueche_remote,HM_TC_Mansarde_WindowRec,HM_TC_Mansarde_remote,HM_TC_Schlafzimmer_WindowRec,HM_TC_Schlafzimmer_remote,HM_TC_Wohnzimmer_WindowRec,HM_TC_Wohnzimmer_remote,HM_VIRT_Bad_Dachfenster,HM_VIRT_Bad_Tuer,HM_VIRT_Kueche_Tuer,HM_VIRT_Schlafzimmer_Tuer,HM_VIRT_Wohnzimmer_Tuer
# tplChan
# tplDel
# tplPeer
# rtrvLst:
# cmdList [({short}|long)]
# deviceInfo [({short}|long)]
# list [({normal}|full)]
# param -param-
# expert:
# def 1
# det 0
# raw 0
# tpl 0
# io:
# flgs 0
# newChn +F9BB34,00,00,00
# rxt 0
# vccu
# p:
# F9BB34
# 00
# 00
# 00
# prefIO:
# mRssi:
# mNo
# peerIDsH:
# prt:
# bErr 0
# sProc 0
# q:
# qReqConf
# qReqStat
# role:
# chn 1
# dev 1
# vrt 1
# tmpl:
#
Sieht meiner Meinug nach gut aus. Wie gesagt wenn ich den Befehl NACH der Erstellung ausführe geht es. Irgendwie "merkt" Perl nicht das dass Device "komplett" ist
Gruß
Thomas
das list sieht gut aus und zeigt auch den befehl.
vermutlich kommt dein "set virtual" zu früh durch die vielen "fhem" cmds.
Möglich,
habe es auch schon mit einem FHEM sleep vor dem Befehl versucht.
Ohne Erfolg.
Gruß
Thomas
mach mal so:
fhem("cmd1; sleep; cmd2; sleep; cmd3");
Morgähn,
habe es so hinbekommen
fhem("sleep 6; set HM_SEC_VIRT_".$NAME." virtual 1");
Dabei darf die Zeit nicht zu kurz sein 4 Sekunden geht z.B. nicht.
Es scheint das FHEM ein weilchen braucht bis das Device "da" ist.
Gruß
Thomas