Wolkenuntergrenze berechnen

Begonnen von Michael, 24 Juli 2013, 20:01:26

Vorheriges Thema - Nächstes Thema

Michael

Moin

Auf Gund dieser Entwicklung (Link)
bin ich mal auf die suche im Netz gegangen.

Und folgendes Gefunden : http://www.cika.de/wetterlexikon/63-was-ist-die-wolkenuntergrenze.html

Und würde es gern bei mir in Fhem einbauen, aber ich bin nicht fit in Perl und Fhem.

Könnt Ihr das mal Ansehen und mir Helfen ?

99_myUtils.pm
##############################################
# $Id: 99_myUtils.pm

package main;

use strict;
use warnings;
use POSIX;


#############################################
# Berechnung der Wolkenuntergrenze nach der Henning'schen Faustformel
# Quelle : http://www.cika.de/wetterlexikon/63-was-ist-die-wolkenuntergrenze.html
#

sub clouds_lower_limit($)
{
  $adewpoint = Hier muß der Messuwert hin, nur wie?;
  $atemp = Hier muß der Messuwert hin, nur wie?;
  $diffC = $atemp - $adewpoint0;
 
  $cloud_h = $diffC*122;

  return $cloud_h
}
###########################################

1;


Fhem.cfg
define test_cll_at at +*00:03:00 trigger test_n

define test_n notify test {\
{clouds_lower_limit}\


Achso der Messwerte kommen von einer KS300 Stadion und Willi 's
dewpoint Berechnung.

Könnt Ihr mir Helfen ?

Gruß, Michael

P.s. Ich kommt schon auf seltsam Gedanken ;-))
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

justme1968

das geht doch noch einfach über ein user reading...

einfach das mit hier per telnet oder in die web kommandobox eingeben:
attr s300ht_1 userReadings cloudBase {(ReadingsVal("s300ht_1","temperature", 0)-ReadingsVal("s300ht_1","dewpoint",0))*122}s300ht_1 ist dein device in dem die temperature und dewpoint readings sind.

als ergebnis hast du ein neues reading cloudeBase in deinem device.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Hi Andre

Leider bekomme ich da kein Wert zurück.

Zitateinfach das mit hier per telnet oder in die web kommandobox eingeben:
Habe ich über die web kommandobox gemacht.


Das sagt der Eventmonitor dazu :
2013-07-25 11:40:44 KS300 Wittingen T: 25.7 H: 63 W: 0.0 R: 577.3 IR: no D: 18.1
2013-07-25 11:40:44 KS300 Wittingen rain: 577.3
2013-07-25 11:40:44 KS300 Wittingen wind: 0.0
2013-07-25 11:40:44 KS300 Wittingen humidity: 63
2013-07-25 11:40:44 KS300 Wittingen temperature: 25.7
2013-07-25 11:40:44 KS300 Wittingen israining: no
2013-07-25 11:40:44 KS300 Wittingen dewpoint: 18.1

Das sind die Device Einträge :

(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


???

Gruß, 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

justme1968

du hattest bei der eingabe ein 'attr Wittignen userReadings' zu viel.

es muss so aussehen:

(siehe Anhang / see attachement)


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Hi Andre

Erst mal vielen Danke für deine Antworten und die Geduld.

Aber leider bekomme ich immer noch kein Wert in den Readings angezeigt.

Ist das setzen des Attributes im KS300 überhaupt möglich?

Gruß, 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

justme1968

wenn es ein temperature und ein dewpoint reading gibt sollte es gehen.

zeig bitte noch mal deine userReadings zeile. entweder als screenshot oder als list auf das device.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

muss das userReadings nicht noch unter

Zitatattr global userattr

mit aufgenommen werden?

Dann sollte es aber im fhem-log eine entsprechende Fehlermeldung geben bzw. beim eingeben der Zeile müsste schon eine solche
aufgetaucht sein.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

ich hab gerade im code nachgeschaut. du hast leider recht. das KS300 modul kann reine readingFnAttributes. schade.

du musst es doch von hand machen. die beiden werte die du brauchst bekommst du jeweils mit ReadingsVal

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Dank euch beiden.

@Puschel74
Leider hilft der Eintrag zusätzlich unter attr global userattr auch nicht weiter.

@all
Kann mir den jemand dabei Helfen.
Und was muss in die Fhem.cfg

##############################################
# $Id: 99_myUtils.pm

package main;

use strict;
use warnings;
use POSIX;


#############################################
# Berechnung der Wolkenuntergrenze nach der Henning'schen Faustformel
# Quelle : http://www.cika.de/wetterlexikon/63-was-ist-die-wolkenuntergrenze.html
#

sub cloudBase($)
{
  $adewpoint = ReadingsVal("Wittingen","dewpoint",0);
  $atemp = ReadingsVal("Wittingen","temperature",0);
  $diffC = $atemp - $adewpoint0;
 
  $cloud_h = $diffC*122;

  return $cloud_h
}
###########################################

1;

Ist das richtig?

Gruß, 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

Michael

keiner da mir zu Helfen?
Bzw auf den richtigen weg zubringen.

Verstehe ich bei diesen Wetter
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

Hallo Michael,

was funtioniert denn genau nicht? Die Berechnung in der 99_myUtils sollte grundsätzlich funktionieren. Aber die 99_myUtils ist in ihrer Struktur noch unvollständig.

probier mal so:


package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

#############################################
# Berechnung der Wolkenuntergrenze nach der Henning'schen Faustformel
# Quelle : http://www.cika.de/wetterlexikon/63-was-ist-die-wolkenuntergrenze.html
#

sub cloudBase()
{
  $adewpoint = ReadingsVal("Wittingen","dewpoint",0);
  $atemp = ReadingsVal("Wittingen","temperature",0);
  $diffC = $atemp - $adewpoint0;
 
  $cloud_h = $diffC*122;

  return $cloud_h;
}
###########################################

1;


Danach solltest du mit { cloudBase } in der fhem Kommandozeile ein Ergebnis bekommen.

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 Udo

Dank dir für deine Hilfe.
Hat mich ein Stück weiter gebracht.

So, musste die "my" noch davor setzen.
Und mit { cloudBase } über die Kommandzeile bekommen ich ein Wert.

Wo (dummy,notify,???) in Fhem kann ich den Wert eintragen.

##############################################
# $Id: 99_myUtils.pm

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

#############################################
# Berechnung der Wolkenuntergrenze nach der Henning'schen Faustformel
# Quelle : http://www.cika.de/wetterlexikon/63-was-ist-die-wolkenuntergrenze.html
#

sub cloudBase()
{
  my $adewpoint = ReadingsVal("Wittingen","dewpoint",0);
  my $atemp = ReadingsVal("Wittingen","temperature",0);
  my $diffC = $atemp - $adewpoint;
 
  my $cloud_h = $diffC*122;

     $cloud_h = sprintf("%.0f", $cloud_h);

  return $cloud_h;
}
###########################################

1;


Gruß, 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

betateilchen

Kommt drauf an, was willst Du denn mit dem Wert anfangen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Michael

Hi

Ich möchte Ihn erstmal in eine Log schreiben lassen und dann einen Plot erstellen.

Denn mehr kann man da damit Wahrscheinlich nicht anfangen.

Gruß, 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

justme1968

du kannst es z.b. aus einem at regelmäßig als reading in dein device schreiben und dann ganz normal wie jedes reading loggen.

{ my $hash =  $defs{Wittingen};
  readingsSingleUpdate($hash,"cloudBase", cloudBase(), 1) if( defined($hash) );}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Hi

Habe es so in Fhen.cfg eingetragen.
define test at +00:00:10 { my $hash =  $defs{Wittingen};
  readingsSingleUpdate($hash,"cloudBase", cloudBase(), 1) if( defined($hash) );}

Und bekomme diese Fehlermeldung :
Unknown command readingsSingleUpdate($hash,"cloudBase",, try help Unknown command }, try help
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

justme1968

die semikolon müssen verdoppelt werden wenn du sie direkt von hand in das config file schreibst. es ist viel einfacher wenn man das übers web frontend macht. das kümmert sich darauf.

leg dir per telnet oder command box ein at an: define updateCloudBase at +*01:00:00 {}
dann im web interface in der detail ansicht für dieses at auf DEF klicken einfach zwischen den geschweiften klammern editieren und danach modify drücken.

am ende save nicht vergessen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

DANKE !!![/color]

Jetzt steht es in den Readings.

Nun kommt gerade eine Frage auf.
Kann man diesen Wert jetzt auch noch in den STATE aufnehmen? :)
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

justme1968

schau dir stateFormat an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Ich trau mir fast nicht mehr zu Fragen.

Aber, ...

1.) Wie od. womit kann man die lesen Zeit abgleichen?

+*00:00:30 {my $hash =  $defs{Wittingen};
  readingsSingleUpdate($hash,"cloudBase", cloudBase(), 1) if( defined($hash) );}

2.) Geh ich falsch der Annahme das der STATE gelockt wird?
    Wollte keinen eignen Erstellen.
 
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

justme1968

in meinem beispiel war es +*01:00:00 -> jede stunde.

bei dir eben +*00:00:30 -> alle 30 sekunden. ich glaube nicht das du das willst...

STATE wird nicht geloggt. es ist nur das was du im frontend in der raum übersicht siehst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michael

Zitatbei dir eben +*00:00:30 -> alle 30 sekunden. ich glaube nicht das du das willst...
Nein, war nur zum Testen.

Gibt es denn die Möglichkeit die Zeit zu synchronisieren?
Die vom Device (KS300) auf die des updateCloudBase [gedachte Beispiel(at +* {KS300.timer}] zuübertragen.

SORRY, ich weiß ich Nerve.
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

justme1968

nein. synchronisieren geht nicht.

aber du kannst statt einem at ein notify verwenden und den dewpoint als trigger verwenden. dann wird der wert immer aktualisiert nach dem sich der dewpoint geändert hat und der sollte sich immer ändern nach dem sich die temperatur geändert hat. also etwas in der art:define upateCloudBase notify Wittingen:dewpoint {...}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

stromer-12

Mit einen userreading würde es berechnet, wenn der ks300 werte liefert.
So habe ich es bei meinen Aussensensor eingetragen ohne die myUtils.

attr <name> userReadings cloudBase {(ReadingsVal($name,"temperature", 0)-ReadingsVal($name,"dewpoint",0))*122}

edit: tschuldigung, gerade gesehen das das beim ks300 nicht geht
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

justme1968

das war auch mein erster vorschlag. aber wie wir weiter oben leider schon festgestellt haben kann der ks300 keine userreadings...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968