Wetterstation HB-UNI-SEN-WEA

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

jp112sdl
Beiträge: 1585
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von jp112sdl » 02.09.2018, 09:07

Und was machst du, wenn nach einem Reset die ersten 99mm Regen fallen?
VG,
Jérôme



chka
Beiträge: 1454
Registriert: 13.02.2012, 20:23

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von chka » 02.09.2018, 09:15

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
CCU2 - Watchdog Watchdog2- CuL V2 868mHz- CuxDemon - PioTek Tracker - Veluxe und Somfy Anbinung- io.Broker aufm ESX 6.5
Keine Support PNs Danke!

bigscreen
Beiträge: 69
Registriert: 20.10.2009, 21:14

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von bigscreen » 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

jp112sdl
Beiträge: 1585
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von jp112sdl » 12.09.2018, 19:19

Ja da bist du schon ganz richtig.

Du musst dann nur _wind_isr_counter halbieren.
VG,
Jérôme



bigscreen
Beiträge: 69
Registriert: 20.10.2009, 21:14

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von bigscreen » 14.09.2018, 16:14

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.

jp112sdl
Beiträge: 1585
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von jp112sdl » 14.09.2018, 16:17

Ich kann zu dem Script leider gar nichts sagen. Hatte es nie getestet oder im Einsatz. Es wurde mir nur von einem Anwender zugesandt.
VG,
Jérôme



bigscreen
Beiträge: 69
Registriert: 20.10.2009, 21:14

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von bigscreen » 18.09.2018, 11:40

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

jp112sdl
Beiträge: 1585
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von jp112sdl » 19.09.2018, 19:55

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)
VG,
Jérôme



Dampfmotor
Beiträge: 34
Registriert: 20.03.2016, 11:32

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von Dampfmotor » 10.10.2018, 13:44

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?

jp112sdl
Beiträge: 1585
Registriert: 20.11.2016, 20:01
Kontaktdaten:

Re: Wetterstation HB-UNI-SEN-WEA

Beitrag von jp112sdl » 10.10.2018, 13:53

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.
VG,
Jérôme



Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“