So, nach langem stillem mitlesen will ich nun mal aktiv werden. Ich habe mir die Wetterstation HM-WDS100-C6-O-2 zugelegt. Anlernen an vccu kein Problem. Wetterdaten werden schön an FHEM gesendet. Ab jetzt wird's schwierig.
Problem 1: Ein direktes peeren mit meinen Jalousieaktoren (6 Stück) geht irgendwie gar nicht (set Wetterstation peerchan 1 <JalousieAktorName> single set). Der Jalousieaktor setzt das Peer manchmal aber nur im Aktor und nicht in der Wetterstation. Ein Trigger erfolgt dann laut log auch, aber die Jalousie macht nichts.
Problem 2: Sturmerkennung. Das geht mal gar nicht. Wenn ich das Model auf HM-WDS100-C6-O manuell umstelle bekomme ich zumindest storm:quiet geliefert wenn wirklich vom Sensor 00 gesendet wird. "storm:storm" bekomme ich nur wenn ich sehr stark am Sensor das Windrad anpuste (Fön) so dass der Sensor C8 (200) sendet. Alles dazwischen ergibt dann nur noch "storm:-". Ich gehe mal davon aus, dass es an der Firmware liegt. Evtl. hat die Wetterstation in Früheren Stationen immer 200 bei Sturm gesendet und nun sendet sie allerdings eine Wert zw. 0 und 255. Wenn ich das Attribut model wieder auf HM-WDS100-C6-O-2 stelle bekomme ich "storm:unknown+HEX" zurück. Ich habe das nun mal quick and dirty in der 10_CUL_HM.pm angepasst so dass ich wenigstens den dezimal Wert ohne unknown bekomme. Allerdings fliegt das ja bei jedem FHEM Update wieder raus. 10_CUL_HM.pm Zeile 1466: {else $txt = "unknown:$state"}
habe ich in:{else $txt = hex($state)}
geändert. So kann ich aktuell in einem notify wenigstens auf die Sturmwerte reagieren.
Wie kann man das verbessern, oder bin ich einfach nur zu blöd das ding zu implementieren :-)?
die Antworten würden mich auch interessieren.
Zu den Problemen 1+2:
In der Version -2 der Wetterstation gibt es die Schwellwerterkennung für Sturm nicht mehr. Die Station sendet ihre Sensordaten nur noch alle 2-3 Minuten. Die Erkennung von Windböen ist damit zuverlässig nicht möglich.
Damit ist m.M. auch ein peering (wie im Wiki beschrieben) mit dieser Version nicht mehr möglich. Eigene Versuche haben das zumindest (leider) bestätigt.
Ich hätte die Funktion aber auch gerne ...
ZitatIn der Version -2 der Wetterstation gibt es die Schwellwerterkennung für Sturm nicht mehr. Die Station sendet ihre Sensordaten nur noch alle 2-3 Minuten.
Das ist so nicht richtig. Wenn man das Windrad ordentlich beschleunigt sendet die HM-WDS100-C6-O-2
sofort einen Wert an die vccu und auch einen Trigger an die peers. Die interne Sturmerkennung ist also vorhanden. Ich kann es ja wie gesagt mit meinem Hack in der 10_CUL_HM auch auswerten und via Notify dann die Jalousien fahren. Ich würde nur gern den Umweg über fhem vermeiden...
Zitat von: discoebbe am 24 April 2017, 13:43:02
Das ist so nicht richtig. ...
Dann werde ich wohl meine manuellen Tests wiederholen und heute Abend mal "am Rad drehen"...
Du wirst in den Logs dann ein event finden mit dem Wert "unknown:HEX", je nachdem wie schnell du drehst. Hier mal ein Auzug aus meinen Logs, als ich die Wetterstation (vor unzähligen Resets) sogar mal mit den Jalousie Aktoren gepeert hatte:
2017-04-17_00:52:30 Wetterstation storm: unknown:22
2017-04-17_00:52:30 Wetterstation trig_01: JalousieEsszimmerSued
2017-04-17_00:52:30 Wetterstation trigger_cnt: 15
2017-04-17_00:52:30 Wetterstation storm: unknown:22
2017-04-17_00:52:30 Wetterstation trig_01: JalousieKueche
2017-04-17_00:52:30 Wetterstation trigger_cnt: 7
2017-04-17_00:52:30 Wetterstation storm: unknown:22
2017-04-17_00:52:30 Wetterstation trig_01: JalousieGalerie
2017-04-17_00:52:30 Wetterstation trigger_cnt: 7
2017-04-17_00:52:31 Wetterstation storm: unknown:22
2017-04-17_00:52:31 Wetterstation trig_01: JalousieEsszimmerWest
2017-04-17_00:52:31 Wetterstation trigger_cnt: 7
2017-04-17_00:52:31 Wetterstation storm: unknown:22
2017-04-17_00:52:31 Wetterstation trig_01: JalousieWohnzimmer
2017-04-17_00:52:31 Wetterstation trigger_cnt: 7
2017-04-17_00:52:31 Wetterstation storm: unknown:22
2017-04-17_00:52:31 Wetterstation trig_01: JalousieGast
2017-04-17_00:52:31 Wetterstation trigger_cnt: 7
Aktuell habe ich das "unknown" rausgepatcht und den HEX lasse ich als Dezimalzahl ausgeben. Ich tippe mal das da ein Wert zwischen 0 und 255 ausgegeben wird. Wenn die simulierte Windgeschwindigkeit mit dem Fön so um die 40-50 km/h ist kommt da ein Dezimalwert von 15 - 20 raus. Das passt auch gut zu den Schwellenwerten (Threshold) die man beim Vorgänger gewählt hat...
So, ich habe nun tatsächlich 3 Föhne auf den Anemometer gerichtet: Mehr als 62,7 km/h habe ich nicht erreicht. Das "unknown" - Reading hat sich auch nicht geändert.
Ich kann das also leider nicht nachvollziehen...
Stell mal manuell das Attribut "Model" auf "HM-WDS100-C6-O" und wiederhole deinen Versuch... Ich kann leider nicht mehr alles nachvollziehen, aber ich hatte am Tag der ersten Inbetriebnahme vor lauter Verzweiflung an vielen Schrauben gedreht. Dann Irgendwann auch ein Peer hinbekommen (welches die Jalousie sogar einmal geschlossen hat statt sie zu öffnen). Dabei war das Attribut Model auch auf "HM-WDS100-C6-O" gestellt. Wahrscheinlich wurden dadurch doch ein paar Register in die Wetterstation geschrieben und seitdem sendet sie mir Sturm-Werte sofort... Ich geh auch gleich nochmal mit dem Fön ran...
Also es scheint so zu sein... Ich habe eben wieder "erfolgreich" ein Rollo mit der Wetterstation gepeert es kommen triggers abgesetzt die gilt es nun nur noch auszuführen. Hier mal ein List von meiner Wetterstation:
Internals:
DEF 4DC2F4
HMLAN1_MSGCNT 1414
HMLAN1_RAWMSG E4DC2F4,0000,2F24A350,FF,FFA3,AF80104DC2F428651F020532060F07050A010000
HMLAN1_RSSI -93
HMLAN1_TIME 2017-04-24 21:52:28
HMLAN2_MSGCNT 1522
HMLAN2_RAWMSG RA185C061,0001,868FFD4D,FF,FFA3,B080104DC2F428651F020532061407050A010000
HMLAN2_RSSI -93
HMLAN2_TIME 2017-04-24 21:52:29
IODev HMLAN2
LASTInputDev HMLAN2
MSGCNT 2936
NAME Wetterstation
NOTIFYDEV global
NR 282
NTFY_ORDER 50-Wetterstation
STATE Temperatur: 10.7 °C, Feuchtigkeit: 51 %, Helligkeit: 0, Regen: 1.18 mm/qm, Wind: 53.4 km/h, Richtung: 55
TYPE CUL_HM
lastMsg No:B0 - t:10 s:4DC2F4 d:28651F 020532061407050A010000
peerList RolloBueroArbeiten,
protCmdDel 8
protLastRcv 2017-04-24 21:52:29
protResnd 6 last_at:2017-04-24 10:16:09
protResndFail 4 last_at:2017-04-24 09:46:16
protSnd 28 last_at:2017-04-24 21:52:28
protState CMDs_done
rssi_at_HMLAN1 min:-94 lst:-93 cnt:1414 max:-67 avg:-75.21
rssi_at_HMLAN2 avg:-78.24 max:-71 cnt:1522 lst:-93 min:-97
Readings:
2017-04-24 21:52:27 CommandAccepted yes
2017-04-24 21:52:27 PairedTo 0x28651F
2017-04-24 21:52:29 R-RolloBueroArbeiten_chn-01-stormLowThresh 5
2017-04-24 21:52:29 R-RolloBueroArbeiten_chn-01-stormUpThresh 20
2017-04-24 21:52:29 R-RolloBueroArbeiten_chn-01-sunThresh 50
2017-04-24 21:50:11 R-burstRx off
2017-04-24 10:17:25 R-pairCentral 0x28651F
2017-04-24 21:52:28 R-stormLowThresh 5
2017-04-24 21:52:28 R-stormUpThresh 15
2017-04-24 21:50:12 R-sunThresh 50
2017-04-24 21:52:27 RegL_00. 01:00 02:01 0A:28 0B:65 0C:1F 18:00 00:00
2017-04-24 21:52:28 RegL_01. 05:32 06:0F 07:05 0A:01 00:00
2017-04-24 21:52:29 RegL_01.RolloBueroArbeiten_chn-01 05:32 06:14 07:05 0A:01 00:00
2017-04-24 21:52:26 brightness 0
2017-04-24 21:52:26 humidity 51
2017-04-24 21:52:26 isRaining 0
2017-04-24 21:52:28 peerList RolloBueroArbeiten,
2017-04-24 21:52:26 rain 1.18
2017-04-24 21:52:26 state T: 10.7 H: 51 W: 53.4 R: 1.18 IR: 0 WD: 55 WDR: 67.5 S: 53 B: 0
2017-04-24 21:45:22 storm 21
2017-04-24 21:52:26 sunshine 53
2017-04-24 21:52:26 temperature 10.7
2017-04-24 21:45:22 trig_01 RolloBueroArbeiten
2017-04-24 21:45:22 trigger_cnt 28
2017-04-24 21:50:12 unknown 0400000000000105320A010000
2017-04-24 21:52:26 windDirRange 67.5
2017-04-24 21:52:26 windDirection 55
2017-04-24 21:52:26 windSpeed 53.4
So. nun bin ich dem ganzen wohl auf der Spur. Folgende Triggers habe ich am Jalousie-Aktor erhalten:
2017-04-24_22:14:57 RolloBueroArbeiten trigLast: Wetterstation:30
2017-04-24_22:14:57 RolloBueroArbeiten trig_Wetterstation: 30_31
2017-04-24_22:14:57 RolloBueroArbeiten deviceMsg: 80 (to Wetterstation)
2017-04-24_22:14:57 RolloBueroArbeiten level: 80
2017-04-24_22:14:57 RolloBueroArbeiten motor: stop:80
2017-04-24_22:14:57 RolloBueroArbeiten pct: 80
2017-04-24_22:14:57 RolloBueroArbeiten 80
2017-04-24_22:14:57 RolloBueroArbeiten timedOn: off
Das ist ja schonmal gut. Ich glaube er fährt die Jalousie nicht auf 100% da der Wert im Trigger nicht 200 ist sondern der tatsächlich gemessene Wert (hier im Beispiel 30), ohne eine Schwelle zu beachten und den Wert auf 200 aufzurunden.
Wer kann mir sagen wie ich die Reatkion auf den Trigger am Jalousie-Aktor ändern kann, damit er auch bei Werten ab 20 auf 100% fährt?
Ich bin leider erst mal für kurze Zeit raus ... das Filesystem auf der SD-Card hat es zerlegt. Mein Raspi wurde immer langsamer, dann habe ich einen Reboot gemacht, nun gibt es ausreichend Fehlermeldungen beim Booten. Ich muss jetzt erst mal eine neue SD-Card besorgen und die Backups einspielen.
Wenn alles wieder läuft, steige ich wieder mit Tests ein.
Es geht voran. Vorab: Die Jalousie erhält nun bei Sturm sofort einen Trigger und sie geht auch auf ;) . Wie ich das implementiert habe ist aber garantiert falsch, aber es soll den Stein mal weiter ins Rollen bringen damit hier am Ende eine Lösung für alle entsteht die diese Wetterstation gern direkt mit den Jalousien peeren möchten.
Also ich bin wie folgt vorgegangen:
1. Attribute model der HM-WDS100-C6-O-2 manuel gelöscht und auf HM-WDS100-C6-O geändert
2. Mit Jalousie gepeert (set Wetterstation peerchan 1 <JalousieAktorName> single set)
3. Problem mit Trigger Wert kleiner als 200 (trigLast: Wetterstation:25) wie folgt gelöst:
Bei der Jalousie habe ich Register: lgCtValLo, shCtValLo, lgCtValHi, shCtValHi, lgOffLevel und shOffLevel wie folgt (siehe Auszug aus get reg all) geändert:
3:Wetterstation_chn-01 lgActionType :jmpToTarget
3:Wetterstation_chn-01 lgBlJtDlyOff :refOff
3:Wetterstation_chn-01 lgBlJtDlyOn :refOn
3:Wetterstation_chn-01 lgBlJtOff :dlyOn
3:Wetterstation_chn-01 lgBlJtOn :dlyOff
3:Wetterstation_chn-01 lgBlJtRampOff :off
3:Wetterstation_chn-01 lgBlJtRampOn :on
3:Wetterstation_chn-01 lgBlJtRefOff :off
3:Wetterstation_chn-01 lgBlJtRefOn :on
3:Wetterstation_chn-01 lgCtDlyOff :geLo
3:Wetterstation_chn-01 lgCtDlyOn :geLo
3:Wetterstation_chn-01 lgCtOff :geLo
3:Wetterstation_chn-01 lgCtOn :geLo
3:Wetterstation_chn-01 lgCtRampOff :geLo
3:Wetterstation_chn-01 lgCtRampOn :geLo
3:Wetterstation_chn-01 lgCtRefOff :geLo
3:Wetterstation_chn-01 lgCtRefOn :geLo
3:Wetterstation_chn-01 lgCtValHi :15
3:Wetterstation_chn-01 lgCtValLo :100
3:Wetterstation_chn-01 lgDriveMode :direct
3:Wetterstation_chn-01 lgMaxTimeF :0.5 s
3:Wetterstation_chn-01 lgMultiExec :on
3:Wetterstation_chn-01 lgOffDly :0 s
3:Wetterstation_chn-01 lgOffLevel :100 %
3:Wetterstation_chn-01 lgOffTime :unused
3:Wetterstation_chn-01 lgOffTimeMode :absolut
3:Wetterstation_chn-01 lgOnDly :0 s
3:Wetterstation_chn-01 lgOnLevel :100 %
3:Wetterstation_chn-01 lgOnTime :unused
3:Wetterstation_chn-01 lgOnTimeMode :absolut
3:Wetterstation_chn-01 shActionType :jmpToTarget
3:Wetterstation_chn-01 shBlJtDlyOff :refOff
3:Wetterstation_chn-01 shBlJtDlyOn :refOn
3:Wetterstation_chn-01 shBlJtOff :dlyOn
3:Wetterstation_chn-01 shBlJtOn :dlyOff
3:Wetterstation_chn-01 shBlJtRampOff :off
3:Wetterstation_chn-01 shBlJtRampOn :on
3:Wetterstation_chn-01 shBlJtRefOff :off
3:Wetterstation_chn-01 shBlJtRefOn :on
3:Wetterstation_chn-01 shCtDlyOff :geLo
3:Wetterstation_chn-01 shCtDlyOn :geLo
3:Wetterstation_chn-01 shCtOff :geLo
3:Wetterstation_chn-01 shCtOn :ltLo
3:Wetterstation_chn-01 shCtRampOff :geLo
3:Wetterstation_chn-01 shCtRampOn :geLo
3:Wetterstation_chn-01 shCtRefOff :geLo
3:Wetterstation_chn-01 shCtRefOn :geLo
3:Wetterstation_chn-01 shCtValHi :15
3:Wetterstation_chn-01 shCtValLo :100
3:Wetterstation_chn-01 shDriveMode :direct
3:Wetterstation_chn-01 shMaxTimeF :unused
3:Wetterstation_chn-01 shMultiExec :off
3:Wetterstation_chn-01 shOffDly :0 s
3:Wetterstation_chn-01 shOffLevel :100 %
3:Wetterstation_chn-01 shOffTime :unused
3:Wetterstation_chn-01 shOffTimeMode :absolut
3:Wetterstation_chn-01 shOnDly :0 s
3:Wetterstation_chn-01 shOnLevel :100 %
3:Wetterstation_chn-01 shOnTime :unused
3:Wetterstation_chn-01 shOnTimeMode :absolut
So. Nun die Fragen an alle Profis: Wie hätte ich das A) besser machen können und B) Warum muss ich die Wetterstation absichtlich als Vorgängerversion im Attribut model einstellen damit ich die Register für die Peers setzten kann... Die ist doch wahrscheinlich einfach noch nicht korrekt in fhem implementiert, oder?
Problem ist nun zu meiner Zufriedenheit gelöst. Letzte Probleme mit den passenden Registern für die Trigger konnte ich heute auch lösen.
Für alle zur Info. Bevor man Sturmmeldungen vom HM-WDS100-C6-O-2 bekommt muss man das Attribut model auf HM-WDS100-C6-O stellen und danach peeren. Sobald ein direktes Peering existiert, kann man das Model wieder ändern. Die Wetterstation sendet dann an alle Peers die Sturm Warnung. Über die Register shCtValHi und shCtValLo kann man dann, direkt am jeweiligen Aktor, problemlos die Sturm-Schwellen definieren. Sie hierzu mein Post von heute: https://forum.fhem.de/index.php/topic,71323.0.html (https://forum.fhem.de/index.php/topic,71323.0.html)
Es wäre schön, wenn wir hier eine bessere Implementierung in FHEM auf lange Sicht hinbekommen, denn so ist es ja eher etwas umständlich.
besser?
Auf jeden Fall ist es nach dem Update anders :)
Das sind die Register die ich über get regList nun erhalte:
0: burstRx | literal | | device reacts on Burst options:on,off
0: localResDis | literal | | local reset disable options:off,on
0: pairCentral | 0 to 16777215 | | pairing to central
1: sign | literal | | signature (AES) options:on,off
1: stormLowThresh | 0 to 200 | | Storm lower threshold
1: stormUpThresh | 0 to 200 | | Storm upper threshold
1: sunThresh | 0 to 255 | | Sunshine threshold
1: windSpeedRsltSrc | literal | | wind result source options:average,max
4: peerNeedsBurst | literal | required | peer expects burst options:on,off
Da ist auch was ganz neues dabei "windSpeedRsltSrc". Damit lässt sich nun also auch einstellen ob die Windgeschwindigkeit im Schnitt genommen werden soll, oder das Maximum, das im aktuellen Messintervall gemessen wurde. Sehr schön!
Ansonsten erscheint nun wieder das unknown im Reading Storm. Ich denke das könnte man entfernen und an dieser stelle einfach direkt den decimal wert schicken. Aktuell kommt unknown:HEX. Der Decimalwert davon entspricht ja eigentlich genau der gemessenen Windgeschwindigkeit. Die Station kann Windgeschwindigkeiten bis max 200 km/h messen (laut Manual). Wenn Sie nun als Decimalwert 20 (hex 14) für Sturm sendet, was ja 10 % entspricht, dann wären es ja auch tatsächlich 20 km/h Wind. Das deckt sich auch mit meinen Beobachtungen.
Battery scheint zu funktionieren. Bekomme in refelmäßigen Abständen ein Battery:ok im Log.
So nun kommen wir zu den Problemen: Die Peers sind noch nicht so toll. Ich wollte bei einem Rollo den stormUpThresh verstellen im Log bekomme ich dann:
R-RolloBueroArbeiten_chn-01-stormUpThresh: set_20
soweit so richtig. Aber dann bekomme ich nur noch murks in fhem:
2017-05-02_09:14:49 Wetterstation unknown: 04000000000000010002010A280B650C1F
2017-05-02_09:14:50 Wetterstation unknown: 0400000000000011001800
2017-05-02_09:14:50 Wetterstation unknown: 04000000000000
Ich glaube das wären die Antworten der Wetterstation gewesen so wie ich sie erhalten hatte als ich das Model auf die Vorgängerversion gestellt habe:
2017-04-21_22:08:50 Wetterstation R-RolloBueroArbeiten_chn-01-stormLowThresh: 5
2017-04-21_22:08:50 Wetterstation R-RolloBueroArbeiten_chn-01-stormUpThresh: 15
2017-04-21_22:08:50 Wetterstation R-RolloBueroArbeiten_chn-01-sunThresh: 50
Also es ist gut möglich, dass die Register in der Wetterstation für die Peers richtig angekommen sind, aber in FHEM nicht richtig wiedergegeben wird. Muss ich also testen ob an den Aktoren dann die passenden Trigger ankommen. Mache ich dann heute Abend.
hiho,
hat sich hier eventuell neues ergeben?
vorzugsweise eine noob-fähige lösung für das peeren in sachen wind min und max wäre verzweifelt gesucht.