Seite 39 von 146

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 02.09.2018, 09:07
von jp112sdl
Und was machst du, wenn nach einem Reset die ersten 99mm Regen fallen?

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 02.09.2018, 09:15
von chka
die zählt er doch, erst ab 100 zählt er nicht mehr.

wenn ich richtig in den logs es verstehe geht er schlagartig hoch auf 32764 und dann wieder runter auf 0, die systemvariable ist dann aber schon gefüllt auf 32764 und geht nicht mehr runter.

du hast recht es müsste rainCounter.Value() < 32764

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 12.09.2018, 18:35
von bigscreen
Hallo,

jetzt habe ich auch wieder ein Stück weitergebaut. Allerdings habe ich ein Anemometer, das pro Umdrehung 2 mal den Reedkontakt schliest. Deshalb meine Frage, wo wird der Wert für die Windgeschwindigkeit ausgerechnet? Wenn es, wie ich glaube, in Zeile 403 bis 408 ist, versteh ich es nicht ganz und würde mich über eine kurze Erklärung freuen.
Viele Grüße
Johannes

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 12.09.2018, 19:19
von jp112sdl
Ja da bist du schon ganz richtig.

Du musst dann nur _wind_isr_counter halbieren.

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 14.09.2018, 16:14
von bigscreen
Vielen Dank für die Antwort.
Jetzt noch eine Frage zu dem Luftdruck Tendenz Script. Solange ich es im debug Modus teste, errechnet es die Werte in der Ausgabe richtig. Allerdings werden die Werte weder bei debug true/false in die Sysetmvariablen geschrieben. Mit welchem Befehl in dem Script wird das gemacht? Ich hoffe das mir die Info bei der Fehlersuche hilft.

Vielen Dank
Johannes
P.S. Ich bin der Meinung das Script hat schon mal funktioniert, ich habe allerdings keine Ahnung was ich geändert habe.

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 14.09.2018, 16:17
von jp112sdl
Ich kann zu dem Script leider gar nichts sagen. Hatte es nie getestet oder im Einsatz. Es wurde mir nur von einem Anwender zugesandt.

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 18.09.2018, 11:40
von bigscreen
Dann antworte ich mir mal selbst :-)
Ich habe das Script jetzt so geändert das es bei mit der aktuellen RaspberryMatic Version läuft.

Code: Alles auswählen

! Luftdruck Tendenz berechnen
! Ingo Pirker 02.06.2018
! Ergänzt für RaspberryMatic fossi_bear 16.09.2018

! Script alle 30min aufrufen
! folgende Systemvariablen müssen erstellt werden:

!		Luftdruck_aktuell	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_tendenz	Type = Wertliste | Wertebeteich = st|fa;st|gleich;steigend;fa|stark st;gleichbleibend;fa|st;fa|gleich;fallend;st|stark fa
!		Luftdruck_Bedeutung	Type = Wertliste | Wertebeteich = stürmisch;regnerisch;wechselhaft;sonnig;sehr trocken
!		Luftdruck_30	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_60	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_90	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_120	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_150	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa
!		Luftdruck_180	Type = Zahl | Wertebeteich = 0 - 65000 | Maßeinheit = hPa


!Quelle: https://rechneronline.de/barometer/
!Bedeutung Variable Luftdruck_tendenz:
! 0 = 1.+ 2. Std. steigend, 3. Std. fallend 		--> (st|fa)          
! 1 = 1.+ 2. Std. steigend, 3. Std.gleichbleibend 	--> (st|gleich)
! 2 = Alle 3 Stunden steigend 				--> (steigend)
! 3 = 1. Std. fallend, 2.+ 3. Std. steigend 		--> (fa|stark st)
! 4 = Alle 3 Stunden gleichbleibend 			--> (gleichbleibend)
! 5 = 1.+ 2. Std. fallend, 3. Std. steigend 		--> (fa|st)
! 6 = 1.+ 2. Std. fallend, 3. Std. gleichbleibend 	--> (fa|gleich)
! 7 = Alle 3 Stunden fallend 				--> (fallend)
! 8 = 1. Std. steigend, 2.+ 3. Std. fallend 		--> (st|stark fa)

!Bedeutung Variable Luftdruck_Bedeutung:
!	    <= 980hPa = sehr tief, stürmisch		--> (stürmisch)
!	980 - 1000hPa = tief, regnerisch		--> (regnerisch)
!      1000 - 1020hPa = normal, wechselhaft		--> (wechselhaft)
!      1020 - 1040hPa = hoch, sonnig			--> (sonnig)
!             >= 1040 = sehr hoch, sehr trocken		--> (sehr trocken)


boolean debug = false; 							!debug true/false
var konstLD = 0.042;							!Wert für definition von Konstanten Luftdruck (ca. 0,042hPa/h | 0,504hPa/12h)

if (debug == true){
!var LDsensor = 927.900; 							!Luftdruck vom Sensor simulieren
var LDsensor = dom.GetObject("BidCos-RF.XXWEA00001:1.AIR_PRESSURE").Value(); 	!oder echten Sensor verwenden !!!!!ACHTUNG - Seriennummer anpassen!!!!!
}
else {
var LDsensor = dom.GetObject("BidCos-RF.XXWEA00001:1.AIR_PRESSURE").Value(); 	!Luftdruck vom Sensor auslesen   !!!!!ACHTUNG - Seriennummer anpassen!!!!!
}
dom.GetObject("Luftdruck_aktuell").State(LDsensor);			!Variable - Luftdruck_aktuell auslesen


!Luftdruck Bedeutung ermitteln
if (LDsensor < 980) {
	if (debug == true) {WriteLine("Luftdruck Bedeutung = sehr tief, stürmisch");}
	dom.GetObject("Luftdruck_Bedeutung").State(0);
}
if ((LDsensor >= 980)  &&  (LDsensor < 1000)) {
	if (debug == true) {WriteLine("Luftdruck Bedeutung = tief, regnerisch");}
	dom.GetObject("Luftdruck_Bedeutung").State(1);
}
if ((LDsensor >= 1000)  &&  (LDsensor < 1020)) {
	if (debug == true) {WriteLine("Luftdruck Bedeutung = normal, wechselhaft");}
	dom.GetObject("Luftdruck_Bedeutung").State(2);
}
if ((LDsensor >= 1020)  &&  (LDsensor < 1040)) {
	if (debug == true) {WriteLine("Luftdruck Bedeutung = hoch, sonnig");}
	dom.GetObject("Luftdruck_Bedeutung").State(3);
}
if (LDsensor >= 1040) {
	if (debug == true) {WriteLine("Luftdruck Bedeutung = sehr hoch, sehr trocken");}
	dom.GetObject("Luftdruck_Bedeutung").State(4);
}
  
  

var LD30 = dom.GetObject("Luftdruck_30").Value();				!Variable - Luftdruck_30 auslesen   
var LD60 = dom.GetObject("Luftdruck_60").Value();				!Variable - Luftdruck_60 auslesen
var LD90 = dom.GetObject("Luftdruck_90").Value();				!Variable - Luftdruck_90 auslesen
var LD120 = dom.GetObject("Luftdruck_120").Value();				!Variable - Luftdruck_120 auslesen
var LD150 = dom.GetObject("Luftdruck_150").Value();				!Variable - Luftdruck_150 auslesen
var LD180 = dom.GetObject("Luftdruck_180").Value();				!Variable - Luftdruck_180 auslesen
  
if (debug == true) {
	WriteLine("Luftdruck Sensor = "  #LDsensor #"hPa");
	WriteLine("Luftdruck vor 30min = "#LD30#"hPa");
	WriteLine("Luftdruck vor 60min = "#LD60#"hPa");
	WriteLine("Luftdruck vor 90min = "#LD90#"hPa");
	WriteLine("Luftdruck vor 120min = "#LD120#"hPa");
	WriteLine("Luftdruck vor 150min = "#LD150#"hPa");
	WriteLine("Luftdruck vor 180min = "#LD180#"hPa");
	}
  
  
  !Berechnung Stunde#3
var LDmin; 	!Hilfe für gleichbleibenden Luftdruck berechnen
var LDmax; 	!Hilfe für gleichbleibenden Luftdruck berechnen
var Stunde1; 	!0 = unverändert | 1 = gestiegen | 2 = gesunken
var Stunde2; 	!0 = unverändert | 1 = gestiegen | 2 = gesunken
var Stunde3; 	!0 = unverändert | 1 = gestiegen | 2 = gesunken


 LDmin = LDsensor - konstLD;
 LDmax = LDsensor + konstLD;

if (debug == true) {	
	WriteLine("Luftdruck Stunde#3 min = "# LDmin#"hPa");
	WriteLine("Luftdruck Stunde#3 max = "# LDmax#"hPa");
}

!Luftdruck auswerten Stunde#3
if ((LD60 >= LDmin)  &&  (LD60 <= LDmax)) {
	if (debug == true) {WriteLine("Luftdruck Stunde#3 ist unverändert");}
	Stunde3 = 0;
}
elseif (LDsensor < LD60) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#3 ist gesunken");}
	Stunde3 = 2;
}
elseif (LDsensor > LD60) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#3 ist gestiegen");}
	Stunde3 = 1;
}

  
  
  
  
  
!Berechnung Stunde#2
LDmin = LD60 - konstLD;
LDmax = LD60 + konstLD;

if (debug == true) {	
	WriteLine("Luftdruck Stunde#2 min = "# LDmin# "hPa");
	WriteLine("Luftdruck Stunde#2 max = "# LDmax# "hPa");
}


!Luftdruck auswerten Stunde#2
if ((LD120 >= LDmin)  &&  (LD120<= LDmax)) {
	if (debug == true) {WriteLine("Luftdruck Stunde#2 ist unverändert");}
	Stunde2 = 0;
}
elseif (LD60 < LD120) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#2 ist gesunken");}
	Stunde2 = 2;
}
elseif (LD60 > LD120) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#2 ist gestiegen");}
	Stunde2 = 1;
}

!Berechnung Stunde#1
LDmin = LD120 - konstLD;
LDmax = LD120 + konstLD;

if (debug == true) {	
	WriteLine("Luftdruck Stunde#1 min = "# LDmin# "hPa");
	WriteLine("Luftdruck Stunde#1 max = "# LDmax# "hPa");
}

!Luftdruck auswerten Stunde#1
if ((LD180 >= LDmin)  &&  (LD180 <= LDmax)) {
	if (debug == true) {WriteLine("Luftdruck Stunde#1 ist unverändert");}
	Stunde1 = 0;
}
elseif (LD120 < LD180) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#1 ist gesunken");}
	Stunde1 = 2;
}
elseif (LD120> LD180) { 
	if (debug == true) {WriteLine("Luftdruck Stunde#1 ist gestiegen");}
	Stunde1 = 1;
}

if (debug == true) {
	WriteLine("St1= "# Stunde1 #" | St2 = "# Stunde2 #" | St3 = "# Stunde3);
	var x = 0;
	x = Stunde3 + Stunde2 + Stunde1;
	WriteLine("St1+2+3 = "# x);
}


!Auswertung 

if ((Stunde1 == 1) && (Stunde2 == 1) && (Stunde3 == 2)){
	if (debug == true) {WriteLine("steigend | fallend");}
	 dom.GetObject("Luftdruck_tendenz").State(0); 
}
elseif ((Stunde1 == 1) && (Stunde2 == 1) && (Stunde3 == 0)){
	if (debug == true) {WriteLine("steigend | gleichbleibend");}
	dom.GetObject("Luftdruck_tendenz").State(1);
}
elseif ((Stunde1 == 1) && (Stunde2 == 1) && (Stunde3 == 1)){
	if (debug == true) {WriteLine("steigend");}
	dom.GetObject("Luftdruck_tendenz").State(0);
}
elseif ((Stunde1 == 2) && (Stunde2 == 1) && (Stunde3 == 1)){
	if (debug == true) {WriteLine("fallend | stark steigend");}
	dom.GetObject("Luftdruck_tendenz").State(3);
}
elseif ((Stunde1 == 0) && (Stunde2 == 0) && (Stunde3 == 0)){
	if (debug == true) {WriteLine("gleichbleibend");}
	dom.GetObject("Luftdruck_tendenz").State(4);
}
elseif ((Stunde1 == 2) && (Stunde2 == 2) && (Stunde3 == 1)){
	if (debug == true) {WriteLine("fallend | steigend");}
	dom.GetObject("Luftdruck_tendenz").State(5);
}
elseif ((Stunde1 == 2) && (Stunde2 == 2) && (Stunde3 == 0)){
	if (debug == true) {WriteLine("fallend | gleichbleibend");}
	dom.GetObject("Luftdruck_tendenz").State(6);
}
elseif ((Stunde1 == 2) && (Stunde2 == 2) && (Stunde3 == 2)){
	if (debug == true) {WriteLine("fallend");}
	dom.GetObject("Luftdruck_tendenz").State(7);
}
elseif ((Stunde1 == 1) && (Stunde2 == 2) && (Stunde3 == 2)){
	if (debug == true) {WriteLine("steigend | stark fallend");}
	 dom.GetObject("Luftdruck_tendenz").State(8);
}

!Messwerte jeweil um 30 min nach hinten versetzen
LD180=LD150; 	  dom.GetObject("Luftdruck_180").State(LD180);
LD150=LD120; 	  dom.GetObject("Luftdruck_150").State(LD150);
LD120=LD90; 	  dom.GetObject("Luftdruck_120").State(LD120);
LD90=LD60;        dom.GetObject("Luftdruck_90").State(LD90);
LD60=LD30; 	      dom.GetObject("Luftdruck_60").State(LD60);
LD30=LDsensor;    dom.GetObject("Luftdruck_30").State(LD30);


if (debug == true) {
	
	WriteLine("Werte um 30mim nach hinten versetzt");
}


WriteLine("fertig");
Viele Grüße
Johannes

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 19.09.2018, 19:55
von jp112sdl
bigscreen hat geschrieben:
12.09.2018, 18:35
Hallo,

jetzt habe ich auch wieder ein Stück weitergebaut. Allerdings habe ich ein Anemometer, das pro Umdrehung 2 mal den Reedkontakt schliest. Deshalb meine Frage, wo wird der Wert für die Windgeschwindigkeit ausgerechnet? Wenn es, wie ich glaube, in Zeile 403 bis 408 ist, versteh ich es nicht ganz und würde mich über eine kurze Erklärung freuen.
Viele Grüße
Johannes
Du könntest auch einfach den Anemometer-Radius halbieren. Also nur die Hälfte in der WebUI eintragen. 8)

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 10.10.2018, 13:44
von Dampfmotor
Habe ein Probleme, mit dem UV-Sensor VEML6070.

Bei schönsten Sonnenschein zeigt er mir Index 0 an.
1.png
Habe den Sendeintervall auf 600sek. stehen.


Stelle ich ihn auf 60sek., geht es.
2.png

Im Diagramm gut zu sehen.
Um 12:40 habe ich von 60sek. auf 600sek. umgestellt
3.png

Einer eine Idee, wo der Wurm steckt?

Re: Wetterstation HB-UNI-SEN-WEA

Verfasst: 10.10.2018, 13:53
von jp112sdl
Hi,
Dampfmotor hat geschrieben:
10.10.2018, 13:44
Einer eine Idee, wo der Wurm steckt?
Ja. Mach mal aus dem "uint8_t uvindex;" ein uint16_t.