[patch] 13_KS300.pm - zusätzliches Reading für Windstärke (bft)

Begonnen von betateilchen, 15 Februar 2014, 18:43:47

Vorheriges Thema - Nächstes Thema

betateilchen

Bezugnehmend auf diesen Thread

http://forum.fhem.de/index.php/topic,19988.0.html

schlage ich diesen Patch vor.

--- edit: Patch entfernt, da fehlerhaft.  Weiterentwicklung im Laufe dieses Threads. ---

Die Doku ist noch nicht für das zusätzliche Reading angepasst und die im Thread gestellte Frage bzgl der stateFormat Aktualisierung ist auch noch offen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

stateFormat ist (wie du in dem Thread auch schreibst) Teil von readingFnAttributes, und 13_KS300.pm wird mit diesem Patch weder richtig noch vollstaendig auf readings*Update umgestellt. Ein bisschen umstellen mache ich nicht mit, weil ich dann bei der ersten (berechtigten) Fehlermeldung die Arbeit am Hals habe.

Die Umrechnung mit "$w ~~ [10..59|" schaut zwar elegant aus, erzeugt aber ein Feld mit 50 Elementen, und sucht dann $ w in diese Feld, indem es durchiteriert, ist also deutlich ineffizienter als ein Vergleich. Mit einem altmodischen Vergleich & Doku wuerde ich den Patch nehmen.

Uebrigens liefert ein KS300 laut Doku Werte nur bis 99,9, insofern ist Windstaerke 11 und 12 nur fuer die Code-Leser relevant.

Mich wuerde in diesem Zusammenhang deutlich mehr interessieren, wie man den Windmesser eicht.

betateilchen

Hallo Rudi,

die Sache mit dem stateFormat ist - wie erwartet - schon schiefgegangen (siehe den Wunschthread), das werde ich wieder rausnehmen.
Die Sache mit dem Vergleich kann ich gerne umbauen und die Windstärken 11 und 12 auskommentieren :).

Danke für Deine Hinweise, ich melde mich hier wieder.

Viele Grüße
Udo
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

Hallo Rudi, betateilchen

ZitatUebrigens liefert ein KS300 laut Doku Werte nur bis 99,9, insofern ist Windstaerke 11 und 12 nur fuer die Code-Leser relevant.

Mich wuerde in diesem Zusammenhang deutlich mehr interessieren, wie man den Windmesser eicht.

Wenn ich das richtig auf Seite 7 lese können schon Geschwindigkeiten bis 200 km/h gemessen werden.
http://www.elv-downloads.de/service/manuals/KS300/65390_um.pdf

Oder eine Annahme ist total falsch, was gut möglich ist
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

det.

Fein, dann warten wir hier mal in Startposition bis es eine neue Version zum Testen gibt. Jedenfalls ist das prima, wenn dieser Modul auch auf das stateFormat umgestellt wird.
Das Eichen des Windmessers ist mMn weniger das Problem, als ein Wetterwarten adäquater Aufstellungsort des K300. Solange das Ding irgendwo zwischen Haus und Nachbargarage steht (funktechnisch optimal) und nicht auf freiem Feld liefert das eh nur Relativwerte.
LG
det.

rudolfkoenig

Zitatkönnen schon Geschwindigkeiten bis 200 km/h gemessen werden.
Bei mir stand noch 99.9 in der Anleitung drin. Ich glaube sowohl das als auch das 200 ist irgendetwas, was die Marketing-Leute erfunden haben. Auch deswegen wuerde ich gerne eichen...nein, kalibrieren ist das richtige Wort.

ZitatJedenfalls ist das prima, wenn dieser Modul auch auf das stateFormat umgestellt wird.
Das hat hier keiner behauptet...

stromer-12

Bei mir empfange ich einen Windmesser eines Nachbarn. Wenn man die Werte betrachtet, lierfert der m/s und nicht km/h.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

betateilchen

grnpf... was denn nun? 99.9 oder 200? Ich werde einfach die komplette Liste bis 12 drinlassen.

@Rudi: um auf readingsFnAttr umzustellen, müsste man


  • alle $def->{READINGS} (im Coding also $r) auf readings...Update() umstellen
  • die Zeilen mit CHANGED alle entfernen

Richtig? Ich frage das, weil diese Logik noch aus meiner "vor-fhem-Developer-Zeit" stammt und ich mich mit dem alten Mechanismus nie beschäftigt habe.

Und an der Doku muss ich gar nix wichtiges ändern, da sind nämlich gar keine Readings beschrieben  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: stromer-12 am 16 Februar 2014, 11:41:24
Bei mir empfange ich einen Windmesser eines Nachbarn. Wenn man die Werte betrachtet, lierfert der m/s und nicht km/h.

Und wenn Du im define den windfaktor angibst, kannst Du km/h bekommen, siehe commandref. 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stromer-12

Zitat von: betateilchen am 16 Februar 2014, 11:48:21
Und wenn Du im define den windfaktor angibst, kannst Du km/h bekommen, siehe commandref. 8)
Den Windfaktor habe ich irgendwie überlesen, Danke für den Tipp.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

betateilchen

#10
Here we go again...

Alle interessierten Tester mögen bitte diesen Post bis zum Ende lesen!




Zitat von: rudolfkoenig am 16 Februar 2014, 10:23:52Ein bisschen umstellen mache ich nicht mit, weil ich dann bei der ersten (berechtigten) Fehlermeldung die Arbeit am Hals habe.

Verlangt auch niemand von Dir. Ich habe Dir die Umstellung komplett abgenommen 8)

Zitat von: rudolfkoenig am 16 Februar 2014, 10:23:52Mit einem altmodischen Vergleich & Doku wuerde ich den Patch nehmen.

Geändert.

Zitat von: rudolfkoenig am 16 Februar 2014, 10:23:52Uebrigens liefert ein KS300 laut Doku Werte nur bis 99,9, insofern ist Windstaerke 11 und 12 nur fuer die Code-Leser relevant.

Aufgrund der hier aufgekommenen Diskussion habe ich die komplette Zuordnungstabelle bis bft 12 beibehalten.

Zitat von: rudolfkoenig am 16 Februar 2014, 10:23:52Mich wuerde in diesem Zusammenhang deutlich mehr interessieren, wie man den Windmesser eicht.

Da kann ich Dir leider nicht weiterhelfen, da ich den Sensor weder selbst besitze noch ihn kenne. Und in meiner Balkonwohnlage würde der auch keinen Sinn machen.




Wichtig für alle Tester!


  • In der angehängten Version gab es viele Änderungen zur Einbindung des Moduls in fhem (Umstellung auf readings..Update).
  • An der Berechnung der angezeigten Werte wurde grundsätzlich nichts verändert, die zugrundeliegenden Werte mussten allerdings auf ReadingsVal() umgestellt werden und ich hoffe, dass ich dabei keinen Fehler gemacht habe.
  • stateFormat sollte damit jetzt auch funktionieren.

Bitte macht Euch einen Screenshot Eurer Readings VOR DEM Update und vergleicht nach dem Modulupdate alle Werte auf Plausibilität!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

sorry, im LOG steht:

2014.02.16 14:29:51 1: readingsUpdate(CUL_0,tsecs,1392557391) missed to call readingsBeginUpdate first.
2014.02.16 14:29:51 1: readingsUpdate(CUL_0,rain_raw_adj,939) missed to call readingsBeginUpdate first.
2014.02.16 14:32:23 1: readingsUpdate(CUL_0,tsecs,1392557543) missed to call readingsBeginUpdate first.
2014.02.16 14:32:23 1: readingsUpdate(CUL_0,rain_raw_adj,939) missed to call readingsBeginUpdate first.
2014.02.16 14:34:56 1: readingsUpdate(CUL_0,tsecs,1392557696) missed to call readingsBeginUpdate first.
2014.02.16 14:34:56 1: readingsUpdate(CUL_0,rain_raw_adj,939) missed to call readingsBeginUpdate first.
2014.02.16 14:37:28 1: readingsUpdate(CUL_0,tsecs,1392557848) missed to call readingsBeginUpdate first.
2014.02.16 14:37:28 1: readingsUpdate(CUL_0,rain_raw_adj,939) missed to call readingsBeginUpdate first

und im state defined, sonst passiert nichts
LG
det.

betateilchen

#12
Dafür brauchst DU Dich doch nicht entschuldigen. Ich kann das Modul hier mangels Sensor nur auf syntaktische Fehler testen.

War mein Fehler, das readingsBeginUpdate stand an der falschen Stelle ;)

Teste bitte nochmal.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

irgendwie leitet es state auf CUL_0 um - im KS300 steht:
Zitat

CODE

1234
[/q][/t]

CUL_0_MSGCNT

2

CUL_0_RAWMSG

K1794000600AB6305

CUL_0_RSSI

-71.5

CUL_0_TIME

2014-02-16 15:23:16

1234

IODev

CUL_0

LASTInputDev

CUL_0

MSGCNT

2

NAME

KS300

NR

212

RAINUNIT

255

STATE

defined

TYPE

KS300

WINDUNIT

1
Readings

avg_day

T: 7.0 H: 73 W: 0.7 R: 0.0

2014-02-16 14:17:08
[/t]

avg_month

T: 3.6 H: 42 W: 39.8 R: 5.3

2014-02-16 00:03:05

cum_day

2014-02-16 00:03:05 T: 356412.7 H: 3776741 W: 35773.2 R: 239.4

2014-02-16 14:17:08

cum_month

15 T: 54.4 H: 633 W: 597.5 R: 5.3

2014-02-16 00:03:05

humidity

60

2014-02-16 14:17:08

israining

no

2014-02-16 14:17:08

rain

239.4

2014-02-16 14:17:08

rain_raw

939

2014-02-16 14:17:08

rain_raw_adj

939

2014-02-16 14:17:08

state

defined

2014-02-16 15:19:35

temperature

9.7

2014-02-16 14:17:08

tsecs

1392556628

2014-02-16 14:17:08

type_raw

7

2014-02-16 14:17:08

unknown1

2

2014-02-16 14:17:08

unknown3

1

2014-02-16 14:17:08

wind

2.7

2014-02-16 14:17:08

windIndex

1

2014-02-16 14:17:08
und im CUL_0
CMDS
BCFiAZEGMRTVWXefmltux
CUL_0_MSGCNT
43
CUL_0_TIME
2014-02-16 15:29:39
Clients
:FS20:FHT.*:KS300:USF1000:BS:HMS: :CUL_EM:CUL_WS:CUL_FHTTK:CUL_RFR:CUL_HOERMANN: :ESA2000:CUL_IR:CUL_TX:Revolt:IT:
DEF   
/dev/ttyACM_CUL@9600 1034
DeviceName
/dev/ttyACM_CUL@9600
FD
11
FHTID
1034
NAME
CUL_0
NR
22
PARTIAL
RAWMSG
T7C99688224
RSSI
-56
STATE
T: 9.4 H: 60 W: 0.0 R: 239.4 IR: no Wi: 0
TYPE
CUL
VERSION
V 1.55 CUL868
initString
X21
Readings
avg_day
T: 7.1 H: 72 W: 0.6 R: 0.0
2014-02-16 15:23:16
cmds
B C F i A Z E G M R T V W X e f m l t u x
2014-02-16 15:19:29
cum_day
2014-02-16 00:03:05 T: 393711.9 H: 4014821 W: 35773.2 R: 239.4
2014-02-16 15:23:16
humidity
60
2014-02-16 15:23:16
israining
no
2014-02-16 15:23:16
rain
239.4
2014-02-16 15:23:16
rain_raw
939
2014-02-16 15:23:16
rain_raw_adj
939
2014-02-16 15:23:16
raw
is0F00F0FFFFFF
2014-01-25 16:16:03
state
T: 9.4 H: 60 W: 0.0 R: 239.4 IR: no Wi: 0
2014-02-16 15:29:39
temperature
9.4
2014-02-16 15:23:16
tsecs
1392560596
2014-02-16 15:23:16
type_raw
7
2014-02-16 15:23:16
unknown1
6
2014-02-16 15:23:16
unknown3
1
2014-02-16 15:23:16
wind
0.0
2014-02-16 15:23:16
windIndex
0
2014-02-16 15:23:16
LG
det.

betateilchen

#14
das heißt, alle anderen Readings - außer state - funktionieren jetzt?

Doofe Frage, sorry. Sie funktionieren natürlich nicht. Ich hatte nicht weit genug runtergescrollt.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

nein leider nicht, d.h. das sich die Werte des KS300 im reading und state vom CUL_0 wiederfinden - alles beim KS300 bleibt auf dem Stand von vor 2 Versionen.
LG
det.

det.

jetzt geht es, Werte werden aktualisiert, stateFormat schreibt wie gewünscht! Nur noch eine (hoffentlich) Kleinigkeit: in den readings bleibt state auf defined. Damit schreibt FileLog keine Werte...
LG
det.

betateilchen

Hatte ich vorhin testweise auskommentiert und dann vergessen. Jetzt aber...

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

LG
det.

betateilchen

Na prima.

@Rudi: auf eine diff-Datei verzichte ich aufgrund der umfangreichen Änderungen in der ParseFn. Nimm einfach die Moduldatei aus dem vorletzten Beitrag zur Begutachtung und ggf. zum Einchecken.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

Stunden später, es funktioniert immer noch perfekt - > bitte einchecken und der breiten Masse damit zugänglich machen.
Danke an die (Weiter-)Entwickler!
LG
det.

betateilchen

tatsächlich wissen wir das erst in 13 Tagen, wenn sowohl ein Tages- als auch ein Monatswechsel stattgefunden hat  8) Aber ich bin da recht zuversichtlich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Aus Kompatibilitätsgründen sollte man den Modulautor von 98_rain.pm darum bitten, sein Modul auch auf readings..Update() umzustellen, wenn er in der attrList schon die readingsFnAttributes einbindet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habe KS300.pm eingecheckt, musste die Datei aber vorher anpassen:
- die fuer die Berechnung verwendeten readings sollten kein Event verursachen
- avg_day sollte nur einmal am Tag und avg_month nur einmal im Monat geschrieben werden (statt mit jedem Reading bzw einmal am Tag). Da ich "mutig" war, und das Modul ohne Aenderung bei mir ausprobiert habe, hat das erstmal mein Log zerschossen. Nach der Anpassung scheint es zu funktionieren, und ich bekomme wieder 10 Grad gemeldet statt 2014.

betateilchen

Danke fürs Einchecken.

Wie schon beschrieben - mangels Sensor konnte ich das nicht funktional selbst testen, sondern nur syntaktisch.
Da waren solche notwendigen "Feinarbeiten" nicht auszuschließen.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

#25
Moin rudolfkoenig, betateilchen

Erst mal vielen Dank für die viele Arbeit die Ihr mit dem Wunsch hattet.

Aber ich musste heute fest stellen das da wohl noch ein Fehler drin ist?

Version:
# $Id: 13_KS300.pm 4963 2014-02-17 13:24:29Z rudolfkoenig $

Log Eintrag, hier fehlt der windIndex.
2014-02-23_13:03:32 Wittingen dewpoint: 2.2
2014-02-23_13:03:32 Wittingen israining: no
2014-02-23_13:03:32 Wittingen temperature: 9.1
2014-02-23_13:03:32 Wittingen humidity: 62
2014-02-23_13:03:32 Wittingen wind: 4.1
2014-02-23_13:03:32 Wittingen rain: 989.7
2014-02-23_13:03:32 Wittingen T: 9.1  H: 62  W: 4.1  R: 989.7  IR: no  Wi: 1

--------------------------------------------------------------------------------------------------

Edit: Nach dem neusten Update fehlt das Reading "windIndex"
        Habe ich nur dieses Problem?
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

betateilchen

Fehlt nur das Reading selbst oder ist "Wi:" auch in state nicht vorhanden?

Kannst Du  mal bitte die Zeile 116 der aktuellen Modulversion ändern in

        "israining"=>1, "windIndex"=>1);

und dann nochmal testen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

So, habe ich geändert.

Reading ist wieder da, jetzt fehlt nur noch der Wind.
Werde mich dann wieder Melden
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

betateilchen

Na, das klingt ja schonmal nicht schlecht. Und wenn dann mal wirklich wieder Werte drinstehen, brauchen wir nur noch Rudi anstupsen, damit er die Korrektur einbaut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

horchundkuck

#29
Zitat von: rudolfkoenig am 17 Februar 2014, 14:31:37
Habe KS300.pm eingecheckt, musste die Datei aber vorher anpassen:
...
- avg_day sollte nur einmal am Tag und avg_month nur einmal im Monat geschrieben werden (statt mit jedem Reading bzw einmal am Tag).

warum?
bisher habe ich mit avg_day, die bisher gefallene Regenmenge am Tag, dazu benutzt, meine Gartenbewässerung zu aktivieren, wenn nicht genug oder kein Regen gefallen ist, bzw. die Bewässerung abzubrechen, falls es gerade und genug geregnet hat. Das funktioniert nun nicht mehr, da mit readingVal immer der Wert vom Vortag ausgelesen wird.

Frage: Wie kann ich die bisher gefallene Regenmenge anders ermitteln, wenn sich das nicht im KS300-Modul reaktivieren lässt?

Nachtrag: Habe die gefallene Regenmenge jetzt aus der Differenz aus dem Reading rain und dem Rainwert aus cum_day ermittelt, das funktioniert nun wieder. Trotzdem die Frage an @rudolfkoenig:

Bleibt das mit der Aktualisierungsrate bei avg_day mit einmal am Tag bestehen?

rudolfkoenig

ZitatWie kann ich die bisher gefallene Regenmenge anders ermitteln, wenn sich das nicht im KS300-Modul reaktivieren lässt?

Das Problem hat mich vor ein paar Tagen auch ueberrascht, aber ich habe beim Fixen nicht nachgedacht, und in dem Auswerteskript Temperatur und Regenmenge nochmal aus state und cum day berechnet. Auf die Idee, es "richtig" zu machen, kam ich leider nicht.

Ich habe es jetzt hoffentlich auch "richtig" geloest: avg_day wird tagsueber auf dem aktuellen Stand gehalten, ein Event wird aber erst nach Tageswechsel generiert. Das gleiche passiert uebrigens auch mit avg_month, allerdings nur einmal am Tag.

horchundkuck


stromer-12

Zitat von: betateilchen am 26 Februar 2014, 09:50:34
Fehlt nur das Reading selbst oder ist "Wi:" auch in state nicht vorhanden?

Kannst Du  mal bitte die Zeile 116 der aktuellen Modulversion ändern in

        "israining"=>1, "windIndex"=>1);

und dann nochmal testen?

Das fehlt in der aktuellen 13_KS300.pm um das Event für das Reading zu erzeugen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Matscher

Zitat von: stromer-12 am 10 Mai 2014, 21:45:14
Das fehlt in der aktuellen 13_KS300.pm um das Event für das Reading zu erzeugen.

Hier der Patch dazu. :)
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

rudolfkoenig

Fehlt gar nicht, ich will nicht mehr Events haben, insb. nicht solche, die ins Museum gehoeren.


Notfalls kann man mit stateFormat oder userReadings und KS300_windIndex dieses Wert als Event haben.

Matscher

Wusste nicht das es schon antik ist. :)

Dann die Alternative. Danke.
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

rudolfkoenig

ZitatWusste nicht das es schon antik ist.

Hast du dir die Definition mal angeschaut?
Ich finde sowas muss nicht unterstuetzt werden.