Wettermodule ( zb KS300.pm ... ) erweitern

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

Vorheriges Thema - Nächstes Thema

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!