Hallo zusammen,
ich habe nun wirklich alles versucht, ref gelesen, Einsteiger-pdf und stundenlang rumprobiert, aber ich bekomms einfach nicht hin.
Mein Problem:
Ich möchte von einem Türkontakt, der den State "geschlossen" und "offen" annehmen kann, ein Reading erzeugen, das dann z.B. den Namen "Zustand" trägt und dabei für den state "geschlossen" eine "1" ausgibt und für "offen" eine "0". Ich denke, das sollte dann über die Kommandozeile zu machen sein, oder?
Ich bitte die Erfahrenen unter Euch an der Stelle um Unterstützung.
Es müsste ja denke ich irgendwie so aussehen:
setreading <device> Zustand ("<device>.state:geschlossen=1; <device>.state:offen=0)
Alles was hier in der Klammer steht, bekomme ich einfach nicht hin, ich habe wie gesagt Stunden damit verbracht, aber die Syntax zu raten, frustriert nur noch mehr! Ich bitte also um Eure Hilfe!
Danke schonmal!!!
Hallo!
Ich denke nicht dass das so klappt wie du dir das vorstellst.
Du könntest zB ein notify erzeugen das auf deinen Türkontakt reagiert. Im Perl teil kannst du dann prüfen ob deine Türe offen oder geschlossen ist und dann je nach Zustand mit
setreading <device> Zustand 1
dein reading setzen.
Grüße
Hi,
ich glaube, Du suchst "userReadings".
Gruss,
Thorsten
Hallo,
ich habe noch ne Weile getüftelt und habe jetzt mit folgenden 2 Notifys den Zustand in den Türkontakt als Reading reingeschrieben bekommen:
define Tor_ist_auf notify Garagentor { if (Value("Garagentor") eq "offen") { fhem("setreading Garagentor Torstatus 1") } }
define Tor_ist_zu notify Garagentor { if (Value("Garagentor") eq "geschlossen") { fhem("setreading Garagentor Torstatus 0") } }
Funktioniert auch soweit!
Nur wird "Torstatus" nicht im Logfile eingetragen. Was muss ich da tun, damit dies geschieht?
Besten Dank an Euch!
...vielleicht userReadings verwenden?
attr Garagentor userReadings Torstatus:state {Value("Garagentor") eq "offen" ? 1 : 0}
Das sollte alles erledigen ... keine zusätzlichen Notifys etc. mehr nötig.
Das neue Reading Torstatus wird bei jedem Setzen des state entsprechend gesetzt.
Klingt simpel!;)
Das Reading wird jedoch (noch) nicht angezeigt! Muss man da noch etwas bestimmtes tun?
Es wird erst nach dem ersten Füllen angezeigt .. wenn also wieder ein "Garagentor-state-Event" kommt
Habe das Tor schon 2x geöffnet und geschlossen! Tut sich nix! Es sind auch "CMDs pending"...
aber daswar ich wohl schuld, weil ich ein "getConfig" gemacht habe und nicht den Anlernknopf gedrückt habe! (fiel mir gerade ein, sorry)!
Muss das "Torstatus:state" evtl. "Torstatus:STATE" heißen?
Falls es hilft?:
Internals:
CFGFN Garage.cfg
DEF 24D402
HMLAN1_MSGCNT 26
HMLAN1_RAWMSG E24D402,0000,0597B665,FF,FFB3,66A64124D40223A6D7016500
HMLAN1_RSSI -77
HMLAN1_TIME 2014-02-20 23:07:48
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 26
NAME Garagentor
NR 25
STATE geschlossen
TYPE CUL_HM
lastMsg No:66 - t:41 s:24D402 d:23A6D7 016500
protCmdPend 9 CMDs pending
protLastRcv 2014-02-20 23:07:48
protSnd 2 last_at:2014-02-20 23:07:48
protState CMDs_pending
rssi_at_HMLAN1 avg:-77.46 min:-82 max:-75 lst:-77 cnt:26
Readings:
2014-02-20 22:51:44 Activity alive
2014-02-13 19:53:38 D-firmware 2.2
2014-02-13 19:53:38 D-serialNr KEQ0950744
2014-02-13 19:53:38 PairedTo 0x23A6D7
2014-02-13 19:53:38 R-cyclicInfoMsg on
2014-02-13 19:53:38 R-pairCentral 0x23A6D7
2014-02-13 19:53:38 R-transmDevTryMax 6
2014-02-13 19:53:39 R-transmitTryMax 6
2014-02-16 18:17:57 alive yes
2014-02-16 18:17:57 battery ok
2014-02-20 23:07:48 contact closed (to HMLAN1)
2014-02-16 18:17:57 cover closed
2014-02-16 18:17:57 recentStateType info
2014-02-20 23:07:48 state closed
cmdStack:
++A00123A6D724D40200040000000000
++A00123A6D724D40201040000000001
++A00123A6D724D4020103
++A00123A6D724D40200040000000000
++A00123A6D724D40201040000000001
++A00123A6D724D4020103
++A00123A6D724D40200040000000000
++A00123A6D724D40201040000000001
++A00123A6D724D4020103
Helper:
getCfgList all
getCfgListNo ,4
mId 00B1
rxType 12
Io:
nextSend 1392934068.66477
Prt:
bErr 0
sProc 2
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rpt:
IO HMLAN1
flg A
ts 1392934068.5736
ack:
HASH(0xeb66f8)
66800223A6D724D4020101C800
Rssi:
At_hmlan1:
avg -77.4615384615384
cnt 26
lst -77
max -75
min -82
Attributes:
actCycle 028:00
actStatus alive
autoReadReg 4_reqStatus
devStateIcon offen:fts_garage@red geschlossen:fts_garage_door_100@green .*:fts_garage
eventMap open:offen closed:geschlossen
expert 2_full
firmware 2.2
model HM-SEC-SC-2
peerIDs 00000000,
room Garage
serialNr KEQ0950744
subType threeStateSensor
userReadings Torstatus:state {Value("Garagentor") eq "offen" ? 1 : 0}
Das kleine "state" sollte eigentlich ok sein, ist ja der Name des Readings.
Vielleicht mal mit ReadingsVal und Strings statt Value versuchen......
attr Garagentor userReadings Torstatus:state {ReadingsVal($name,'state','') eq 'closed' ? '1' : '0'}
Die 1 und 0 musst du evtl. noch vertauschen, ich weiss jetzt nicht ob du bei "offen" 1 oder bei "geschlossen" 1 haben möchtest.
"state" hat als Inhalt ein englisches "closed" wie du selbst in deinem "list Garagentor" sehen kannst.
Es klappt!!!!!!!!!! :)
Und zwar so:
attr Garagentor userReadings Torstatus {ReadingsVal($name,'state','') eq 'closed' ? '0' : '1'}
Vielen vielen Dank!
Prima!
Der Unterschied wenn du :state hinter dem Torstatus weglässt ist, dass das UserReading nicht nur beim Aktualisieren des state gestezt/aktualisert wird, sondern bei jedem reading-Update ... schau einfach mal in die commandref.
Ok vielen Dank für die Info!