Hallo.
Ich habe hierzu schon einen Beitrag gefunden. Allerdings ist der aus 2016, auf den sich nicht mehr antworten lässt.
Ich wollte bei meiner Wetterstation HM-WDS100-C6-O-2 die Windrichtung in Grad als Text anzeigen lassen.
Dabei habe ich die 99_myUtils.pm wie in dem Thread ergänzt:
sub windDirName($) {
my ($dir) = @_;
my @winddir_name=("N","NNO","NO","ONO","O","OSO","SO","SSO","S","SSW","SW","WSW","W","WNW","NW","NNW");
return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}
Wenn ich {windDirName(200)} eingebe, wird auch ,,SSW" ausgeworfen.
Trotzdem habe ich in der Anzeige aber im ,,N" stehen, egal aus welcher Richtung der Wind kommt.
Ich habe ein List erzeugt, das hoffentlich hilft:
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 20
HMLANGW_RAWMSG 050000381486706808C900000000B648000000003434CB
HMLANGW_RSSI -56
HMLANGW_TIME 2021-06-06 13:28:24
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 20
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 18.2 °C, Feuchtigkeit: 72 %, Helligkeit: 203, Regen: 0 mm/qm, Wind: 0 km/h, Richtung: N, Richtung in Grad: 260
TYPE CUL_HM
chanNo 01
lastMsg No:14 - t:70 s:6808C9 d:000000 00B648000000003434CB
protCmdPend 3 CMDs_pending
protLastRcv 2021-06-06 13:28:24
protRcv 20 last_at:2021-06-06 13:28:24
protState CMDs_pending
rssi_at_HMLANGW cnt:20 min:-57 max:-55 avg:-55.99 lst:-56
.attraggr:
.attrminint:
.userReadings:
HASH(0x32713a8)
CL:
Authenticated 0
BUF
FD 21
FW_ID 273
LASTACCESS 1622978936
NAME WEB_192.168.178.169_49870
NR 274
PEER 192.168.178.169
PORT 49870
SNAME WEB
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1
.attraggr:
.attrminint:
READINGS:
2021-06-06 13:28:45 state Connected
READINGS:
2021-06-06 12:34:49 .D-devInfo 3F0100
2021-06-06 12:34:49 .D-stc 70
2021-06-06 12:37:37 .associatedWith Wetterstation,Wetterstation
2021-06-06 13:28:24 .protLastRcv 20210606132824
2021-06-06 12:34:49 D-firmware 1.6
2021-06-06 12:34:49 D-serialNr PEQ0001456
2021-06-06 12:37:32 IODev HMLANGW
2021-06-06 13:28:24 battery ok
2021-06-06 13:28:24 brightness 203
2021-06-06 12:39:55 cfgState updating
2021-06-06 12:39:55 commState CMDs_pending
2021-06-06 13:28:24 humidity 72
2021-06-06 13:28:24 isRaining 0
2021-06-02 07:35:17 peerList 13D5A503
2021-06-06 12:36:20 powerOn 2021-06-06 12:36:20
2021-06-06 13:28:24 rain 0
2021-06-06 12:36:20 recentStateType info
2021-06-06 13:28:24 state T: 18.2 H: 72 W: 0 R: 0 IR: 0 WD: 260 WDR: 0 S: 52 B: 203
2021-06-06 13:28:24 sunshine 52
2021-06-06 13:28:24 temperature 18.2
2021-06-06 12:36:20 unknown 06000030
2021-06-06 13:28:24 windDirRange 0
2021-06-06 13:28:24 windDirection 260
2021-06-06 13:28:24 windSpeed 0
2021-06-06 13:28:24 winddirText N
cmdStack:
++A00125788A6808C900040000000000
##A00125788A6808C90103
##A00125788A6808C901040000000001
helper:
HM_CMDNR 20
PONtest 1
getCfgList all
getCfgListNo ,1,4
mId 00AE
peerFriend peerAct,peerVirt
peerOpt 1p:THSensor,4:THSensor,p:THSensor
regLst 0,1,1p,4p
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1622976967.14959
TmplTs 1622976967.14959
cmdKey 1:1:0::Wetterstation:00AE:01:
cmdLst:
assignHmKey noArg
burstXmit noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt
Hat jemand eine Idee, woran das liegt?
Danke und schönen Sonntag,
Mandel
Hallo Mandel,
fehlt an deinem list der Schluss? Ich sehe nicht wo Deine sub aufgerufen wird und es zum Reading kommen könnte
Gruß Otto
Hallo Mandel,
das geht einfach als UserReading.
attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}
Gruß Tobi
Ich sehe da keinen Aufruf von deiner Sub 'windDirName'...
Also wo soll dann der richtige Name herkommen?
EDIT: ups, jetzt dachte ich das userReadings wäre von MandelHL ;) Aber von ihm fehlt ja noch die Antwort... ;)
Gruß, Joachim
Tschuldige, ja, ich hatte nicht alles angehängt:
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 54
HMLANGW_RAWMSG 050000393686706808C900000000C541000080120289D5
HMLANGW_RSSI -57
HMLANGW_TIME 2021-06-06 14:54:12
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 54
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 19.7 °C, Feuchtigkeit: 65 %, Helligkeit: 213, Regen: 0 mm/qm, Wind: 1.8 km/h, Richtung: N, Richtung in Grad: 10
TYPE CUL_HM
chanNo 01
lastMsg No:36 - t:70 s:6808C9 d:000000 00C541000080120289D5
protCmdPend 3 CMDs_pending
protLastRcv 2021-06-06 14:54:12
protRcv 54 last_at:2021-06-06 14:54:12
protState CMDs_pending
rssi_at_HMLANGW cnt:54 min:-57 max:-55 avg:-56.57 lst:-57
.attraggr:
.attrminint:
.userReadings:
HASH(0x32713a8)
CL:
Authenticated 0
BUF
FD 21
FW_ID 375
LASTACCESS 1622984191
NAME WEB_192.168.178.170_53618
NR 376
PEER 192.168.178.170
PORT 53618
SNAME WEB
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1
.attraggr:
.attrminint:
READINGS:
2021-06-06 14:56:26 state Connected
READINGS:
2021-06-06 12:34:49 .D-devInfo 3F0100
2021-06-06 12:34:49 .D-stc 70
2021-06-06 12:37:37 .associatedWith Wetterstation,Wetterstation
2021-06-06 14:54:12 .protLastRcv 20210606145412
2021-06-06 12:34:49 D-firmware 1.6
2021-06-06 12:34:49 D-serialNr PEQ0001456
2021-06-06 12:37:32 IODev HMLANGW
2021-06-06 14:54:12 battery ok
2021-06-06 14:54:12 brightness 213
2021-06-06 12:39:55 cfgState updating
2021-06-06 12:39:55 commState CMDs_pending
2021-06-06 14:54:12 humidity 65
2021-06-06 14:54:12 isRaining 0
2021-06-02 07:35:17 peerList 13D5A503
2021-06-06 12:36:20 powerOn 2021-06-06 12:36:20
2021-06-06 14:54:12 rain 0
2021-06-06 12:36:20 recentStateType info
2021-06-06 14:54:12 state T: 19.7 H: 65 W: 1.8 R: 0 IR: 0 WD: 10 WDR: 45 S: 137 B: 213
2021-06-06 14:54:12 sunshine 137
2021-06-06 14:54:12 temperature 19.7
2021-06-06 12:36:20 unknown 06000030
2021-06-06 14:54:12 windDirRange 45
2021-06-06 14:54:12 windDirection 10
2021-06-06 14:54:12 windSpeed 1.8
2021-06-06 14:54:12 winddirText N
cmdStack:
++A00125788A6808C900040000000000
##A00125788A6808C90103
##A00125788A6808C901040000000001
helper:
HM_CMDNR 54
PONtest 1
getCfgList all
getCfgListNo ,1,4
mId 00AE
peerFriend peerAct,peerVirt
peerOpt 1p:THSensor,4:THSensor,p:THSensor
regLst 0,1,1p,4p
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1622976967.14959
TmplTs 1622976967.14959
cmdKey 1:1:0::Wetterstation:00AE:01:
cmdLst:
assignHmKey noArg
burstXmit noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
tplDel
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
list [({normal}|full)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 0
det 0
raw 1
tpl 0
io:
flgs 0
newChn +6808C9,00,00,00
nextSend 1622984052.80496
prefIO
rxt 0
vccu
p:
6808C9
00
00
00
mRssi:
mNo 36
io:
HMLANGW:
-51
-51
peerIDsH:
prt:
bErr 0
sProc 2
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HMLANGW:
avg -56.5740740740741
cnt 54
lst -57
max -55
min -57
tmpl:
Attributes:
.mId 00AE
IODev HMLANGW
alias Wetterstation
appOptions { "template": "thermometer"}
autoReadReg 4_reqStatus
expert rawReg
firmware 1.6
group Wetterstation
model HM-WDS100-C6-O-2
room Wetter
serialNr PEQ0001456
stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h, Richtung: winddirText, Richtung in Grad: windDirection
subType THSensor
userReadings winddirText {windDirName(ReadingsVal("Wetterstation", "windDir",""))}
@Tobi925: Dein Tipp hat leider nicht geholfen. Es bleibt das ,,N", obwohl wir jetzt mit 35 Grad ,,NO" haben.
@MadMax-FHEM: Dass ich die Sub ,,windDirName" aufrufen muss, habe ich nirgendwo gelesen.
Wo und wie muss ich das denn machen?
Danke,
Mandel
Zitat von: MandelHL am 06 Juni 2021, 15:02:37
@MadMax-FHEM: Dass ich die Sub ,,windDirName" aufrufen muss, habe ich nirgendwo gelesen.
Wo und wie muss ich das denn machen?
Danke,
Mandel
EDIT: wenn du auch einen Link zu deiner "Anleitung" gepostet hättest, könnte man dort auch nachgelesen haben ;)
Woher denkst du denn dann, dass die Windrichtung als Text dann herkommt/herkommen soll ;)
"Irgendwas" muss die Sub ja aufrufen.
Und zwar jedes mal, wenn sich die Windrichtung ändert...
...ergo: besser GENAU DAS als Trigger für das userReadings nehmen.
Im userReadings kannst du auch $name nutzen, dann kannst du das Device auch mal umbenennen und das userReadings geht immer noch :)
Gruß, Joachim
Die "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802 (https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802)
Zitat von: jkriegl am 06 Juni 2021, 15:45:18
Die "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802 (https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802)
Wenn dem so ist: GENAU DA steht das mit dem userReadings ;)
Allerdings (auch) OHNE Trigger...
Gruß, Joachim
ausserdem wird das reading "windDir" im userreading übergeben, das es überhaupt nicht gibt.
da muss "windDirection" hin.
Hallo Mandel,
hast du die beiden Codezeilen aus Antwort 2 genau so ausgeführt?
Was kam dann nach einer Änderung des Readings windDirection raus?
Das ganze myUtils-Selbstbau-Gedöns ist doch schon lange nicht mehr notwendig. Diese Umrechnungen gibt es doch dank loredo schon vortrefflich in der UConv.pm
Gruß Tobi
Oha, nun wird's noch schwieriger.
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 1
HMLANGW_RAWMSG 05000037D186706808C900000000B45000004000371230
HMLANGW_RSSI -55
HMLANGW_TIME 2021-06-06 21:26:25
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 1
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 18 °C, Feuchtigkeit: 80 %, Helligkeit: 48, Regen: 0 mm/qm, Wind: 0 km/h, Richtung: N, Richtung in Grad: 275
TYPE CUL_HM
chanNo 01
lastMsg No:D1 - t:70 s:6808C9 d:000000 00B45000004000371230
protCmdPend 3 CMDs_pending
protLastRcv 2021-06-06 21:26:25
protRcv 1 last_at:2021-06-06 21:26:25
protState CMDs_pending
rssi_at_HMLANGW cnt:1 min:-55 max:-55 avg:-55 lst:-55
.attraggr:
.attrminint:
CL:
Authenticated 0
BUF
FD 19
FW_ID 122
LASTACCESS 1623007728
NAME WEB_192.168.178.170_53710
NR 123
PEER 192.168.178.170
PORT 53710
SNAME WEB
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1
.attraggr:
.attrminint:
READINGS:
2021-06-06 21:28:30 state Connected
READINGS:
2021-06-06 12:34:49 .D-devInfo 3F0100
2021-06-06 12:34:49 .D-stc 70
2021-06-06 21:25:44 .associatedWith Wetterstation,Wetterstation
2021-06-06 21:26:25 .protLastRcv 20210606212625
2021-06-06 12:34:49 D-firmware 1.6
2021-06-06 12:34:49 D-serialNr PEQ0001456
2021-06-06 21:25:38 IODev HMLANGW
2021-06-06 21:26:25 battery ok
2021-06-06 21:26:25 brightness 48
2021-06-06 21:26:25 cfgState updating
2021-06-06 21:26:25 commState CMDs_pending
2021-06-06 21:26:25 humidity 80
2021-06-06 21:26:25 isRaining 0
2021-06-02 07:35:17 peerList 13D5A503
2021-06-06 12:36:20 powerOn 2021-06-06 12:36:20
2021-06-06 21:26:25 rain 0
2021-06-06 12:36:20 recentStateType info
2021-06-06 21:26:25 state T: 18 H: 80 W: 0 R: 0 IR: 0 WD: 275 WDR: 22.5 S: 18 B: 48
2021-06-06 21:26:25 sunshine 18
2021-06-06 21:26:25 temperature 18
2021-06-06 12:36:20 unknown 06000030
2021-06-06 21:26:25 windDirRange 22.5
2021-06-06 21:26:25 windDirection 275
2021-06-06 21:24:19 windDirectionIcon Error evaluating Wetterstation userReading windDirectionIcon: Undefined subroutine &UConv::direction2compasspoint called at (eval 264) line 1.
2021-06-06 21:24:19 windDirectionText Error evaluating Wetterstation userReading windDirectionText: Undefined subroutine &UConv::direction2compasspoint called at (eval 263) line 1.
2021-06-06 21:26:25 windSpeed 0
2021-06-06 14:57:04 winddirText N
cmdStack:
++A00125788A6808C900040000000000
##A00125788A6808C90103
##A00125788A6808C901040000000001
helper:
HM_CMDNR 209
getCfgList all
getCfgListNo ,1,4
mId 00AE
peerFriend peerAct,peerVirt
peerOpt 1p:THSensor,4:THSensor,p:THSensor
regLst 0,1,1p,4p
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1623007544.06137
TmplTs 1623007544.06137
cmdKey 1:1:0::Wetterstation:00AE:01:
cmdLst:
assignHmKey noArg
burstXmit noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
tplDel
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
list [({normal}|full)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 0
det 0
raw 1
tpl 0
io:
flgs 0
newChn +6808C9,00,00,00
nextSend 1623007585.85463
prefIO
rxt 0
vccu
p:
6808C9
00
00
00
mRssi:
mNo D1
io:
HMLANGW:
-49
-49
peerIDsH:
prt:
bErr 0
sProc 2
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HMLANGW:
avg -55
cnt 1
lst -55
max -55
min -55
tmpl:
Attributes:
.mId 00AE
IODev HMLANGW
alias Wetterstation
appOptions { "template": "thermometer"}
autoReadReg 4_reqStatus
expert rawReg
firmware 1.6
group Wetterstation
model HM-WDS100-C6-O-2
room Wetter
serialNr PEQ0001456
stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h, Richtung: winddirText, Richtung in Grad: windDirection
subType THSensor
Das ist das neueste List. Obwohl ich nichts mehr mit ,,UConv" eingetragen habe, kommt zweimal eine Fehlermeldung.
Wo kommt die denn nun her. Ich habe gar nichts mehr mit ,,UConv"?
Ich hatte den Code aus Beitrag 2 eins zu eins eingetragen, ohne dass sich etwas getan hat.
Tobi, was soll rauskommen, wenn ich
ZitatWas kam dann nach einer Änderung des Readings windDirection raus?
ausgeführt habe? Bei mir tat sich nichts. Als Text stand trotzdem noch ,,N" da, obwohl die Windrichtung eine andere war.
ZitatDas ganze myUtils-Selbstbau-Gedöns ist doch schon lange nicht mehr notwendig. Diese Umrechnungen gibt es doch dank loredo schon vortrefflich in der UConv.pm
Ist das denn etwas anderes? Wenn ich das richtig verstanden habe, dann wird das doch auch in 99_myUtils eingefügt.
Ich verstehe nicht, was ich eintragen muss, zudem ich ja den Post 2 übernommen habe.
@MadMax-FHEM
ZitatIch sehe da keinen Aufruf von deiner Sub 'windDirName'...
Wie rufe ich die denn auf. Das verstehe ich noch nicht.
Danke und Grüße
Mandel
Bist du dem Link mal gefolgt, der u U. deine Anleitung war (wir aber nicht wissen, weil du es ja nicht postest)...
Naja: in einem userReadings z.B. oder mittels notify und setreading oder per at und setreading... Es gibt viele Möglichkeiten. Aber OHNE dass die Sub (regelmäßig) IRGENDWO aufgerufen wird (oder auch eine andere "Berechnungsfunktion"), wird halt auch KEIN Text als Reading kommen, woher denn auch.
Anmerkung von Frank beachten!
https://forum.fhem.de/index.php/topic,121502.msg1161166.html#msg1161166
EDIT: bzgl. des Fehlers im Reading: evtl. stammt das halt noch von der letzten (fehlgeschlagenen) "berechnung". Danach war ja (verm.) keine "Berechnung" mehr, du hast ja kein userReadings mehr (und verm. auch sonst nichts was das Reading [neu] schreiben würde/geschrieben hätte)...
Gruß, Joachim
Hallo Mandel,
das ganze mal strukturiert.
Ich nehme an, das dein Device als "6808C9" definiert ist.
1) Gib mal oben in fhem in die Kommandozeile " {ReadingsNum('6808C9','windDir',0)} " ein, dann siehst Du ob schon mal die richtige Zahl zurückgeliefert wird. Falls immer die '0' kommt, gibt es das Reading nicht. Dann den Namen des Readings anpassen.
Falls immer die 0 kommt, liefert die Routine auch immer "N", bei 0 Grad kommt immer Norden raus.
2) Danach gibst Du oben in fhem mal in die Kommandozeile {UConv::direction2compasspoint(90)} ein. Da sollte dann E rauskommen. Für 180 dann eben S, usw.
Falls das funktioniert gibst Du oben im fhem in die Kommandozeile:
3) {UConv::direction2compasspoint(ReadingsNum('6808C9','windDir',0))} ein. Damit weisst Du, das dein Reading und die Konversation funktionieren.
4) Dann das Userreading erstellen, und dann auch mal im Eventmonitor nachschauen. Evtl das reading manuell verändern, also oben in fhem in die Kommandozeile "setreading 6808C9 windDir 270" eingeben. Damit kannst Du das dann simulieren.
Das kann man doch ganz einfach der Reihe nach debuggen.
1) ist unnötig, weil es das Reading windDir nicht gibt!
Sondern (verm.) windDirection heißt.
Und: $name in der FhemWeb-Zeile nicht funktionieren wird...
...darum wird auch 3) so nicht klappen.
Es würde nur gehen, wenn statt $name der tatsächliche Device-Name angegeben wird (zumindest für die FhemWeb-Zeile)...
Gruß, Joachim
Zitat von: MadMax-FHEM am 06 Juni 2021, 22:57:38
1) ist unnötig, weil es das Reading windDir nicht gibt!
Sondern (verm.) windDirection heißt.
Und: $name in der FhemWeb-Zeile nicht funktionieren wird...
Gruß, Joachim
Unnötig ist das nicht, wenn, dann wird Mandel das herausrausfinden.
Das mit dem $name habe ich korrigiert. Danke.
So wie ich geschrieben, der Reihe nach, ist es aber zielführend.
Zitat von: MandelHL am 06 Juni 2021, 21:43:07
Tobi, was soll rauskommen, wenn ich ausgeführt habe? Bei mir tat sich nichts. Als Text stand trotzdem noch ,,N" da, obwohl die Windrichtung eine andere war.
Ist das denn etwas anderes? Wenn ich das richtig verstanden habe, dann wird das doch auch in 99_myUtils eingefügt.
Das "nichts" passiert ist glaube ich nicht. Evtl. eine Fehlermeldung im Log?
Und natürlich ist das was anderes. Dabei wird doch nichts in 99_myUtils kopiert! Das Einzige was in der 99_myUtils stehen sollte ist
package main;
use UConv;
falls du noch kein Modul im Einsatz hast, das die UConv bereits geladen hat.
Dann klappt auch ein
{UConv::direction2compasspoint(35)}
zum Test in der Kommandozeile. Und dann funktionieren auch die Userreadings aus Beitrag #2.
Tobi
Ich bin zu doof und bitte, auf die Bestätigung zu verzichten ::)
Ja, meine Anleitung ist von hier:
ZitatDie "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802
Und ich habe daraufhin mein reading so aufgebaut:
attr Wetterstation userReadings attr Wetterstation userReadings winddirText {windDirName(ReadingsVal("Wetterstation", "windDirection",""))}
Auch mit ,,windDir" habe ich es probiert. Das klappt nicht.
Danke, Tobi nun habe ich in der 99_myUtils.pm
package main;
use UConv;
eingefügt und
sub windDirName($) {
my ($dir) = @_;
my @winddir_name=("N","NNO","NO","ONO","O","OSO","SO","SSO","S","SSW","SW","WSW","W","WNW","NW","NNW");
return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}
gelöscht.
Eingetragen habe ich dann auch
attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}
Nun klappt es auch mit
{UConv::direction2compasspoint(35)}
Es wird ,,NE" ausgeworfen.
Trotzdem wird mir das aber nicht richtig angezeigt:
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 5
HMLANGW_RAWMSG 0500003A0486706808C900000000D9420000C0492F14FF
HMLANGW_RSSI -58
HMLANGW_TIME 2021-06-07 10:27:30
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 5
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 21.7 °C, Feuchtigkeit: 66 %, Helligkeit: 255, Regen: 0 mm/qm, Wind: 7.3 km/h, Richtung: N, Richtung in Grad: 235
TYPE CUL_HM
chanNo 01
lastMsg No:04 - t:70 s:6808C9 d:000000 00D9420000C0492F14FF
protCmdPend 3 CMDs_pending
protLastRcv 2021-06-07 10:27:30
protRcv 5 last_at:2021-06-07 10:27:30
protState CMDs_pending
rssi_at_HMLANGW cnt:5 min:-58 max:-58 avg:-58 lst:-58
CL:
Authenticated 0
BUF
FD 19
FW_ID 137
LASTACCESS 1623054545
NAME WEB_192.168.178.203_56454
NR 138
PEER 192.168.178.203
PORT 56454
SNAME WEB
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1
READINGS:
2021-06-07 10:28:59 state Connected
READINGS:
2021-06-06 12:34:49 D-firmware 1.6
2021-06-06 12:34:49 D-serialNr PEQ0001456
2021-06-07 10:15:57 IODev HMLANGW
2021-06-07 10:27:30 battery ok
2021-06-07 10:27:30 brightness 255
2021-06-07 10:16:45 cfgState updating
2021-06-07 10:16:45 commState CMDs_pending
2021-06-07 10:27:30 humidity 66
2021-06-07 10:27:30 isRaining 0
2021-06-02 07:35:17 peerList 13D5A503
2021-06-06 12:36:20 powerOn 2021-06-06 12:36:20
2021-06-07 10:27:30 rain 0
2021-06-06 12:36:20 recentStateType info
2021-06-07 10:27:30 state T: 21.7 H: 66 W: 7.3 R: 0 IR: 0 WD: 235 WDR: 67.5 S: 20 B: 255
2021-06-07 10:27:30 sunshine 20
2021-06-07 10:27:30 temperature 21.7
2021-06-06 12:36:20 unknown 06000030
2021-06-07 10:27:30 windDirRange 67.5
2021-06-07 10:27:30 windDirection 235
2021-06-07 10:27:30 windDirectionIcon ⬋
2021-06-07 10:27:30 windDirectionText SW
2021-06-07 10:27:30 windSpeed 7.3
2021-06-07 08:09:18 winddirText N
cmdStack:
++A00125788A6808C900040000000000
##A00125788A6808C90103
##A00125788A6808C901040000000001
helper:
HM_CMDNR 4
PONtest 1
getCfgList all
getCfgListNo ,1,4
mId 00AE
peerFriend peerAct,peerVirt
peerOpt 1p:THSensor,4:THSensor,p:THSensor
regLst 0,1,1p,4p
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1623053762.4724
TmplTs 1623053762.4724
cmdKey 1:1:0::Wetterstation:00AE:01:
cmdLst:
assignHmKey noArg
burstXmit noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
tplDel
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
list [({normal}|full)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 0
det 0
raw 1
tpl 0
io:
flgs 0
newChn +6808C9,00,00,00
nextSend 1623054450.75437
prefIO
rxt 0
vccu
p:
6808C9
00
00
00
mRssi:
mNo 04
io:
HMLANGW:
-52
-52
peerIDsH:
prt:
bErr 0
sProc 2
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HMLANGW:
avg -58
cnt 5
lst -58
max -58
min -58
tmpl:
Attributes:
IODev HMLANGW
alias Wetterstation
appOptions { "template": "thermometer"}
autoReadReg 4_reqStatus
expert rawReg
firmware 1.6
group Wetterstation
model HM-WDS100-C6-O-2
room Wetter
serialNr PEQ0001456
stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h, Richtung: winddirText, Richtung in Grad: windDirection
subType THSensor
userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))},
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}
Ich weiß nicht, was jetzt noch falsch ist.
Danke für Eure Unterstützung
Mandel
Hallo Mandel,
ist doch alles da:
2021-06-07 10:27:30 windDirRange 67.5
2021-06-07 10:27:30 windDirection 235
2021-06-07 10:27:30 windDirectionIcon ⬋
2021-06-07 10:27:30 windDirectionText SW
Tobi
aber im attr stateformat wird "winddirText" zur anzeige genutzt, nicht "windDirectionText". ;)
Klar, Danke. Das war es ... Wie einfach es dann am Ende doch war. Und vor allem wie man da auf die kleinste Kleinigkeit achten muss.
Ich danke Euch allen für die wieder einmal geduldige Unterstützung.
Eine Sache fällt mir aber auf:
2021-06-07 10:27:30 windDirectionIcon ⬋
2021-06-07 10:27:30 windDirectionText SW
Ist der Windrichtungspfeil nicht falsch herum, wenn der Wind aud Südwest kommt, muss die Pfeilspitze doch in die andere Richtung zeigen.
Oder soll der tatsächlich dahin zeigen, woher der Wind kommt?
Ich habe auch mal sowas als Grafik gebastelt: https://forum.fhem.de/index.php/topic,118329.msg1134210.html#msg1134210
PS Der Pfeil sollte zeigen wohin der Wind weht und nicht woher der Wind kommt
ZitatIch habe auch mal sowas als Grafik gebastelt: https://forum.fhem.de/index.php/topic,118329.msg1134210.html#msg1134210
Wow, das sieht ja Hammer aus. Ich habe ja gerade mit fhemApp angefangen. Das muss ich mir tatsächlich mal überlegen. So ist die Benutzeroberfläche ja echt richtig gut. Danke für den Link.
ZitatPS Der Pfeil sollte zeigen wohin der Wind weht und nicht woher der Wind kommt
Ja, so dache ich mir das auch. Da frage ich mich, wie man den dann einmal um 180 Grad dreht ...
Zitat von: MandelHL am 07 Juni 2021, 11:37:03
Wow, das sieht ja Hammer aus. Ich habe ja gerade mit fhemApp angefangen. Das muss ich mir tatsächlich mal überlegen. So ist die Benutzeroberfläche ja echt richtig gut. Danke für den Link.
Dann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst:
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Wetterstation
ZitatDa frage ich mich, wie man den dann einmal um 180 Grad dreht ...
zb userreading anpassen:
windDirectionIcon:windDirection:.* {
my $dir = ReadingsVal($name,'windDirection',0);
UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}
Zitatzb userreading anpassen:
Darauf muss man aber auch erst mal kommen. Klappt hervorragend, Danke.
Dafür ist hier dann auch der Anfängerbereich :o
Jetzt wird's ein wenig off topic:
ZitatDann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst.
Unbedingt! Und auch die anderen Sachen würde ich grafisch aufarbeiten wollen.
Hinter Deinem Link ist ja alles vorhanden, was aufzubereiten geht.
Das hatte ich ja mit fhemApp vor. Aber nun scheint doch Dein Vorschlag besser zu sein und ich bleibe zudem bei der bisherigen URL.
Ich sehe mir das an. Danke,
Mandel
ZitatIch habe nun doch eine Fehlermeldung in Bezug auf das Icon
du hast ja auch nicht den kompletten code benutzt. warum?
Ich hatte es gerade selbst festgestellt und deshalb den Beitrag wieder gelöscht. Hatte kein Copy and Paste gemacht.
ZitatDann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst:
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Wetterstation
Aber das ist ja dann nicht meine Wetterstation, die dadurch eingebunden wird. Oder verstehe ich das falsch?
Zitat von: MandelHL am 07 Juni 2021, 15:30:20
Aber das ist ja dann nicht meine Wetterstation, die dadurch eingebunden wird. Oder verstehe ich das falsch?
Den ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.
ZitatwindDirectionIcon:windDirection:.* {
my $dir = ReadingsVal($name,'windDirection',0);
UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}
Ich habe alles probiert. Ich bekomme es aber nicht hin, den Pfeil zu drehen.
Ich bin davon ausgegangen, dass es dann komplett so aussehen müsste:
attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {
my $dir = ReadingsVal($name,'windDirection',0);
UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}
Aber das scheint auch falsch zu sein. Kannst Du mir mal bitte die kompletten readings nennen. Danke.
ZitatDen ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.
Das ist ja mal ne Aufgabe für mich. Dafür stehe ich dann doch zu weit am Anfang und muss mich im fortgeschrittenem Stadium mal damit beschäftigen.
Würde ich gerne machen und habe ich auch probiert. Aber das war nix.
der code ist zum eingeben auf der detailseite in das attribut-eingabefeld.
komplett sieht es so aus:
windDirectionText:windDirection:.* {
UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0));
},
windDirectionIcon:windDirection:.* {
my $dir = ReadingsVal($name,'windDirection',0);
UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}
wer fhem.cfg manuell editiert, der sollte natürlich auch wissen, was er tut (welche zeichen escaped werden müssen, etc...). ;)
ZitatDen ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.
@Damian: Ich bin ja nun doch neugierig und so ein bisschen passt das ja auch zum Thema.
Hast Du irgendwo ein Howto, was ich machen muss, damit die Werte aus meinen Readings entnommen werden?
Grüße
Mandel
In der Visualisierungsdefinition zur Wetterstation musst du nur dein Reading einsetzen:
card([DEIN DEVICE:DEIN TEMPERATUR-READING:col3d],"Außentemperatur","temp_outside",-10,60,undef,undef,"°C",\&temp_hue)|\
Doku zu card: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card
Ansonsten musst du dir das Konzept zu uiTable von vorne durchlesen: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#:~:text=An%20dieser%20Stelle%20wird%20das,die%20Web%2DOberfl%C3%A4che%20bedient%20werden.