Wettermodule ( zb KS300.pm ... ) erweitern

Begonnen von Michael, 09 Februar 2014, 17:24:53

Vorheriges Thema - Nächstes Thema

Michael

Moin

Würde mir wünschen wenn dieser Wert in die Wettermodule ( zb. KS300.pm ... ) mit aufgenommen wird.  :)

######################################################
# Berechnung für den WindIndex
# Quelle : http://www.meteotest.ch/wetterprognosen/prognosen_schweiz/windtabelle
#

sub windIndex()
{
my $wI = int(ReadingsVal("DEVICE","wind",0));
        my $wIndex = "";

# Windstärken Bezeichnung

return $wIndex = "0\n" if($wI < 1);
return $wIndex = "1\n" if($wI ~~ [1..5]);
return $wIndex = "2\n" if($wI ~~ [6..11]);
return $wIndex = "3\n" if($wI ~~ [12..19]);
return $wIndex = "4\n" if($wI ~~ [20..28]);
return $wIndex = "5\n" if($wI ~~ [29..38]);
return $wIndex = "6\n" if($wI ~~ [39..49]);
return $wIndex = "7\n" if($wI ~~ [50..61]);
return $wIndex = "8\n" if($wI ~~ [62..74]);
return $wIndex = "9\n" if($wI ~~ [75..88]);
return $wIndex = "10\n" if($wI ~~ [89..102]);
return $wIndex = "11\n" if($wI ~~ [103..117]);
return $wIndex = "12\n" if($wI > 117);

}


Hätte den Vorteil das dieser Wert mit der Windgeschwindigkeit aktualisiert wird.
Und nicht in der myUtils ausgelagert werden muß.
Denn dann kommen die Werte zu unterschiedlichen Zeiten ins Logfile.
Und es würden keine Verschiebungen im Diagramm (SVG) sein.

Diesen Code habe ich zur Zeit im myUtils.pm Modul.

Leider habe ich keine Ahnung von Perl und kann es nicht selber bewerkstelligen.  :'(
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

Wäre es nicht sinnvoller, dann gleich ein neues Reading "windIndex" einzuführen und zu aktualisieren?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#2
Teste mal die angehängte Modulversion, da sollte ein neuer Wert "Wi: " vorhanden sein, in dem die Windstärke steht. Ich kann das selbst nicht testen, da ich keinen solchen Sensor habe.

Edit: Anhang entfernt, für aktuelle Modulversion bitte erst den Thread weiterlesen :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

#3
Hallo betateilchen

Vielen Dank für die Änderung.  :)

ZitatTeste mal die angehängte Modulversion, ...
Werde es Testen und mich dann melden.

ZitatWäre es nicht sinnvoller, dann gleich ein neues Reading "windIndex" einzuführen und zu aktualisieren?]
Ja.

PS. Leider geht dann nichts mehr, das Device wird nicht Angezeigt.
          - Habe die alte KS300.pm umbenannt.
          - Die neue über den Windows Arbeitsplatz eingefügt.  :-\
          - Und den RasPi neu gestartet.

          Und diese Meldung steht im Log:
          2014.02.12 16:40:33 1: reload: Error:Modul 13_KS300 deactivated:
          Too many arguments for main::windIndex at /opt/fhem//FHEM/13_KS300.pm line 228, near "])"

          2014.02.12 16:40:33 0: Too many arguments for main::windIndex at /opt/fhem//FHEM/13_KS300.pm line 228, near "])"

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

Michael

Hallo betateilchen

Der Wi: erscheint jetzt im STATE.

Aber in der Log Datei ist öfter kein Wert hinter dem Wi.
Habe mal eine kurze Log Datei und das Device angehängt.
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

JoWiemann

Hallo Betateilchen,

habe Deine letzte Version genommen und eingespielt und bekomme nun folgende Logeinträge:

2014-02-14_19:58:32 Wetterstation T: 5.3  H: 93  W: 2.2  R: 58.4  IR: yes  Wi:
2014-02-14_20:06:09 Wetterstation T: 5.3  H: 93  W: 1.1  R: 58.4  IR: no  Wi:
2014-02-14_20:21:24 Wetterstation T: 5.3  H: 93  W: 2.7  R: 58.6  IR: yes  Wi:
2014-02-14_20:23:57 Wetterstation T: 5.3  H: 93  W: 1.6  R: 58.6  IR: no  Wi:
2014-02-14_20:36:39 Wetterstation T: 5.3  H: 93  W: 0.8  R: 58.6  IR: no  Wi: 0
2014-02-14_20:46:49 Wetterstation T: 5.3  H: 93  W: 0.8  R: 58.6  IR: no  Wi: 0
2014-02-14_20:56:59 Wetterstation T: 5.4  H: 93  W: 0.5  R: 58.6  IR: no  Wi: 0
2014-02-14_21:02:04 Wetterstation T: 5.5  H: 93  W: 1.6  R: 58.6  IR: no  Wi:
2014-02-14_21:07:09 Wetterstation T: 5.5  H: 92  W: 2.5  R: 58.6  IR: no  Wi:
2014-02-14_21:09:42 Wetterstation T: 5.5  H: 92  W: 0.5  R: 58.6  IR: no  Wi: 0

Kannst Du das mal checken. Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

det.

Hallo betateilchen,
Wenn Du gerade dabei bist das Modul anzufassen, wärest Du zu überreden, stateFormat mit einzubauen?
LG
det.

betateilchen

nein.

Aus mehreren Gründen:

1. es ist nicht mein Modul
2. habe ich keinen Sensor, um das Modul überhaupt zu testen
3. ist das Modul noch nicht auf die "neue" Readings-Logik umgestellt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

#8
Hallo betateilchen,

Wie es aus sieht ändert sich jetzt der Wert Wi: nicht.

2014-02-15_12:10:56 KS300 T: 12.6  H: 65  W: 7.5  R: 984.8  IR: no  Wi: 1
2014-02-15_12:03:18 KS300 T: 12.6  H: 65  W: 6.9  R: 984.8  IR: no  Wi: 1
2014-02-15_12:00:46 KS300 T: 12.7  H: 67  W: 3.6  R: 984.8  IR: no  Wi: 1
2014-02-15_11:55:41 KS300 T: 12.3  H: 67  W: 5.0  R: 984.8  IR: no  Wi: 1
2014-02-15_11:53:08 KS300 T: 12.2  H: 67  W: 26.1  R: 984.8  IR: no  Wi: 1
2014-02-15_11:50:36 KS300 T: 12.0  H: 68  W: 4.1  R: 984.8  IR: no  Wi: 1
2014-02-15_11:48:03 KS300 T: 11.9  H: 68  W: 8.3  R: 984.8  IR: no  Wi: 1
2014-02-15_11:45:31 KS300 T: 11.9  H: 68  W: 4.1  R: 984.8  IR: no  Wi: 1
2014-02-15_11:42:58 KS300 T: 11.9  H: 68  W: 6.1  R: 984.8  IR: no  Wi: 1
2014-02-15_11:40:26 KS300 T: 11.9  H: 69  W: 6.3  R: 984.8  IR: no  Wi: 1
2014-02-15_11:37:53 KS300 T: 11.8  H: 69  W: 4.4  R: 984.8  IR: no  Wi: 1
2014-02-15_11:35:21 KS300 T: 11.7  H: 69  W: 5.2  R: 984.8  IR: no  Wi: 1
2014-02-15_11:32:48 KS300 T: 11.6  H: 69  W: 6.1  R: 984.8  IR: no  Wi: 1
2014-02-15_11:30:16 KS300 T: 11.6  H: 69  W: 5.2  R: 984.8  IR: no  Wi: 1

PS. Was mir noch aufgefallen ist, ist das wenn man ein Fhem shutdown restart macht das Device nicht mehr da ist.
      Und es nach einen rereadcfg wieder kommt.

PPS. Vll haben wir ja Glück und der Modul Autor mischt sich ein.
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

ist hier irgendjemand von den Leuten, die grade das Modul testen, per Skype erreichbar, damit wie das Problem direkt lösen können?

Gibt es inzwischen ein neues Reading "windIndex" im Device?

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

Michael

Zitat... per Skype erreichbar ...
habe ich leider nicht.
Muss mir das wohl mal Ansehen.

ZitatGibt es inzwischen ein neues Reading "windIndex" im Device?
Ja, es ist vorhanden

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

gut, dann geht es nur noch um die Berechnung.

Ich werde mal ein bißchen Logging einbauen, damit ich rausfinde, wo der Wert verlorengeht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#12
grmpf... fehlende Vorwärtsdeklaration. Ein Flüchtigkeitsfehler, auf den ich immer wieder reinfalle.

Bitte 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!

det.

danke, funktioniert!

windIndex 3 2014-02-15 17:06:14
LG
det.

betateilchen

Sehr schön. Danke für die Rückmeldung.

Probier mal, ob mit dieser Version das stateFormat funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

hallo betateilchen,
danke, funktioniert erst halb. Nach manuellem Setzen von stateFormat Temperatur: temperature °C Windstärke: windIndex Luftfeuchtigkeit: humidity % erschein es mit den richtigen Werten in FHEMWeb, nach Aktualisierung der Werte vom Device steht da wieder z.B: T: 6.5 H: 71 W: 5.5 R: 238.7 IR: no Wi: 1
LG
det.

betateilchen

Das hab ich mir gedacht. Das Modul beschreibt STATE selbst, anstatt state zu verwenden.

Ich bastel nochmal was. Gib mir noch 10 Minuten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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

det.

das waren keine 10 min. Ich finde das großartig, dass Du Dich der Sache annimmst, obwohl Du das Device gar nicht im Garten rumstehen hast!
----> perfect funktioniert! Das war das letzte Modul ohne stateFormat in meiner config!
LG
det.

det.

hab leider noch was entdeckt, der STATE aktualisiert sich nicht automatisch sondern bleibt auf dem letzten Wert stehen trotz neuer geänderter Daten vom Device.
LG
det.

betateilchen

ok.

Dann bist DU jetzt aber dran, Rudi (rudolfkoenig) davon zu überzeugen, das Modul in der geänderten Fassung "offiziell" zu machen.
Hier noch der zugehörige Patch für die Moduldatei, nach dem er Dich fragen wird.



mba:FHEM udo$ svn diff 13_KS300.pm
Index: 13_KS300.pm
===================================================================
--- 13_KS300.pm (revision 4929)
+++ 13_KS300.pm (working copy)
@@ -5,6 +5,7 @@
use strict;
use warnings;

+sub windIndex($);

#####################################
sub
@@ -21,7 +22,7 @@
   $hash->{UndefFn}   = "KS300_Undef";
   $hash->{ParseFn}   = "KS300_Parse";
   $hash->{AttrList}  = "IODev do_not_notify:0,1 showtime:0,1 model:ks300 ".
-                        "rainadjustment:0,1 ignore:0,1";
+                        "rainadjustment:0,1 ignore:0,1 stateFormat";
   $hash->{AutoCreate}=
     { "KS300.*" => {
          GPLOT => "temp4rain10:Temp/Rain,hum6wind8:Wind/Hum,",
@@ -98,9 +99,9 @@

     my @v;
     my @txt = ( "rain_raw", "rain", "wind", "humidity", "temperature",
-                "israining", "unknown1", "type_raw", "unknown3");
+                "israining", "unknown1", "type_raw", "unknown3", "windIndex");
     my @sfx = ( "(counter)", "(l/m2)", "(km/h)", "(%)", "(Celsius)",
-                "(yes/no)", "","","");
+                "(yes/no)", "","","","");
     my %repchanged = ("rain"=>1, "wind"=>1, "humidity"=>1, "temperature"=>1,
                 "israining"=>1);

@@ -220,12 +221,13 @@
     $v[3] = "$a[22]$a[21]" + 0;
     $v[4] = "$a[20]$a[19].$a[18]" + 0; $v[4] = "-$v[4]" if($a[17] eq "7");
     $v[4] = sprintf("%0.1f", $v[4]);
-
     $v[5] = ((hex($a[17]) & 0x2) || $haverain) ? "yes" : "no";
     $v[6] = $a[29];
     $v[7] = $a[16];
     $v[8] = $a[17];

+ $v[9] = windIndex($v[2]);
+
     # Negative temp
     $v[4] = -$v[4] if($v[8] & 8);

@@ -234,9 +236,10 @@
     my $max = int(@v);

     # For logging/summary
-    my $val = "T: $v[4]  H: $v[3]  W: $v[2]  R: $v[1]  IR: $v[5]";
+    my $val = "T: $v[4]  H: $v[3]  W: $v[2]  R: $v[1]  IR: $v[5]  Wi: $v[9]";
     Log3 $def, 4, "KS300 $dev: $val";
-    $def->{STATE} = $val;
+#    $def->{STATE} = $val;
+ readingsSingleUpdate($hash,'state',$val,1);
     $def->{CHANGED}[0] = $val;

     for(my $i = 0; $i < $max; $i++) {
@@ -337,6 +340,25 @@

}

+sub windIndex($) {
+# Windst?rken Bezeichnung
+ my ($w) = @_;
+ $w *= 10;
+ return  "0" if($w < 10);
+ return  "1" if($w ~~ [10..59]);
+ return  "2" if($w ~~ [60..119]);
+ return  "3" if($w ~~ [120..199]);
+ return  "4" if($w ~~ [200..289]);
+ return  "5" if($w ~~ [290..389]);
+ return  "6" if($w ~~ [390..499]);
+ return  "7" if($w ~~ [500..619]);
+ return  "8" if($w ~~ [620..749]);
+ return  "9" if($w ~~ [750..889]);
+ return "10" if($w ~~ [890..1029]);
+ return "11" if($w ~~ [1030..1170]);
+ return "12" if($w > 1170);
+}
+
1;

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

betateilchen

Wird die Änderung vielleicht nur nicht angezeigt? Hast Du mal die Seite mit der Detailansicht im Browser neu geladen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

ja, habe ich - ist leider so wie schon geschrieben. Sorry, bin erst mal weg für die nächsten Stunden - bis die Nacht, oder Morgen früh!
LG
det.

Michael

Hallo betateilchen

Zitat... Ich finde das großartig, dass Du Dich der Sache annimmst, obwohl Du das Device gar nicht im Garten rumstehen hast!
Da kann ich mich nur Anschließen.  :) :) :)

Zitat
« Antwort #12 am: 15 Februar 2014, 16:18:14 »
grmpf... fehlende Vorwärtsdeklaration. Ein Flüchtigkeitsfehler, auf den ich immer wieder reinfalle.

Bitte nochmal testen.
« Letzte Änderung: 15 Februar 2014, 17:34:59 von betateilchen »
Ich verwende jetzt erstmal diese Version.

Zitat.. Rudi (rudolfkoenig) davon zu überzeugen, das Modul in der geänderten Fassung "offiziell" zu machen.
Und habe auch die Hoffnung das Rudi das jetzt mit macht.  ;)
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.

Hallo betateilchen,
Nach update und restart heute früh: Es macht leider noch nicht was es soll. Der STATE aktualisiert sich nicht und zeigt noch den Wert von gestern Abend. Dafür hat die Sache eine komische Nebenwirkung: der richtige STATE (unformatiert, wie früher) wird jetzt vom CUL_0 als STATE angezeigt. ROFL: das der jetzt im Takt von Temperatur, Wind und Feuchte rumfunkt scheint nicht der Fall zu sein.
Wenn es dir hilft, kann ich eine TeamViewer Session aufmachen.
LG
det.

betateilchen

wird nur STATE nicht aktualisiert oder auch das Reading nicht?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

det.

die readings sind aktuell, nur der STATE ist adlig (von Gestern)
LG
det.

betateilchen

ja... das war eigentlich zu erwarten.

Rudi hat auch schon (im richtigen Unterforum ;) ) auf unsere Diskussion hier reagiert.

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

Ich werde seine Vorschläge umsetzen und dann eine neue Version bereitstellen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Franz Tenbrock

kurze Zwischenfrage, habe mir das in den command ref durchgelesen, dort stand 868 cul aber geht das ganze auch wenn der Cul mit EM und FS20 Komponenten arbeitet, es gibt ja da verschiedene Protokolle.
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

betateilchen

Aber alle drei (KS300, EM und FS20) arbeiten mit SlowRF, deshalb funktioniert das.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

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