aktuelle Windgeschwindigkeiten anzeigen
Einklappen
X
-
-
Leider fehlt auch in diesem Log der "vorhergehende Teil". Nach einem Neustart des MS wird das Pico-C Programm neu initialisiert und der Wert für das Maximum sollte anhand der aktuellen Werte (Parameter value) berechnet werden. Der 1. Eintrag sollte "Wind gauge initialized! ... " lauten. In dem Log ist das Maximum konstant 1.717986e8, aber kein Hinweis, wie es zu diesem hohen Wert kam.
-
-
Jan, hier nochmal die neue log, was mir aufgefallen ist das die Average Werte irgendwann die Nachkommastellen (bis zu 6 stellen) erhöht sind. Wind_log_1.txtKommentar
-
Hallo djruediger,
es ließ mir einfach keine Ruhe, warum das Programm bei Dir nicht richtig funktioniert. Ich habe daher Deine Werte mit dem Programm v1.2 durch den Pico-C Interpreter laufen lassen, den man bei Github https://github.com/zsaleeba/picoc herunterladen kann und wohl auch die Grundlage für den Interpreter im MS ist. Funktionen wie setoutput habe ich durch ein einfaches printf ersetzt und getinput durch ein Array mit vorgegebenen Werten, die ich aus Deinem Logfile herausgezogen habe (siehe Anhang, falls Du es selbst testen möchtest).
Ich habe tatsächlich noch einen Fehler im Programm gefunden: die Variable "max10" hatte den Typ int und wurde jetzt auf float geändert. Außerdem habe ich aus Sicherheitsgründen den String buffer vergrößert. In der Simulation auf meinem MacBook hat der Fehler aber nur bewirkt, dass die gespeicherten lokalen Maxima von jeweils 10 Werten durch die implizite Umrechnung in C von float auf int gerundet waren. Vielleicht wirkt sich dies auf dem MS anders aus? Im angehängten Log-Output ist der folgende Teil wichtig:
Log: Wind gauge: Value 1.320000 Gusts 1.320000 Average 1.508817 Maximum 3.630000 Storm warning 0.000000 Pointer 278 InputPtr 880
Oldest value that is removed was the maximum, so a new maximum needs to be calculated!
Array of local maxima is array10[60] = { 1.400000, 1.400000 , 1.400000 , 1.400000 , 1.400000 , 0.000000 , 0.000000 , 0.000000 , 0.000000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 1.290000 , 2.580000 , 2.580000 , 1.320000 , 2.340000 , 3.630000 , 3.630000 , 2.340000 , 1.290000 , 2.770000 , 2.770000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 1.440000 , 2.930000 , 2.930000 , 2.930000 , 1.680000 , 1.680000 , 1.680000 , 1.680000 , 1.680000 , 0.580000 , 2.580000 , 2.580000 , 2.580000 , 2.580000 , 1.400000 , 1.400000 , 1.400000 , 1.400000 }
Starting with maximum 2.340000 of last 10 values.
New maximum 2.580000 found in array10[24].
New maximum 3.630000 found in array10[28].
Log: Wind gauge: Value 2.340000 Gusts 1.660000 Average 1.506667 Maximum 3.630000 Storm warning 0.000000 Pointer 279 InputPtr 881
Wenn der älteste Wert aus der Liste der letzten 600 Werte, der jetzt durch einen neuen Wert ersetzt wird, das Maximum war, dann muss der Algorithmus ein neues Maximum berechnen. Wenn dieser Fall eintritt, dann sucht der optimierte Algorithmus aus den 60 gespeicherten lokalen Maxima, die jeweils 10 Werte umfassen, das Maximum heraus. Damit wird nur 1/10 der Zeit gegenüber einem einfachen Algorithmus verwendet, der alle 600 Werte durchsucht. An dieser Stelle wurde bei Dir der unsinnige Wert 1.717986e8 ermittelt. Selbst bei der vorherigen Version, wo die Variable max10 den falschen Typ int hatte, wurde nicht so ein hoher Wert ermittelt, allerdings waren alle Werte in dem Array durch die implizite Umrechnung von float auf int gerundet und daher nicht exakt.
Eine neue Version v1.3 habe ich in Post #1 hochgeladen.
Was mir sonst noch auffiel: Bei deinem Sensor, der ja über KNX läuft, werden nicht sekündlich neue Werte gemessen, sondern nur alle 15 Sekunden und häufig liefert der Sensor nach 15 Sekunden wieder den gleichen Wert. Bei aktuellen Windgeschwindigkeiten ist dies eher ungewöhnlich und mein Sensor misst sekündlich andere Werte, die sich nicht wiederholen (außer es ist windstill). Sind dies bei Dir gerundete Mittelwerte?
Wenn es immer noch nicht geht (was ich nicht hoffe ;-), dann kann ich Dir eine spezielle Debug-Version senden, in der die printf Befehle aus dem Programm für die Simulation, die den o.a. Output erzeugt haben, in setlogtext geändert sind, um zu sehen, welche Werte bei Dir in dem Array gespeichert waren.
Gruß JanMiniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
Node-RED: IKEA TradfriKommentar
-
Jetzt ist die Version 1.3 hoffentlich da.Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
Node-RED: IKEA TradfriKommentar
-
Hi Jan, habe keine übergroßen Werte mehr, super gemacht. Was mir aber auffällt, habe ich z.b. Wind Max letzte 10 Min von 8,1 m/s, und fällt dann die Windgeschwindigkeit unter 8,1 m/s über ein Zeitraum von mehreren Stunden, bleibt der Wert 8,1 m/s bei Wind Max letzte 10 Min. Für mich sieht es eher so aus als ob er allgemein die Max Windstärke anzeigt.
Dann finde ich keine Einstellung, dass der Windsensor Sekündlich Werte Liefert.
Ich hoffe das die Baustelle nicht zu Umfangreich wird, ist ja auch deine Zeit die ich in Anspruch nehme.
Kommentar
-
Hi djruediger,
ich konnte das von Dir beschriebene Fehlerbild mit dem Simulator sehr einfach reproduzieren. Nach einiger Überlegung habe ich den Fehler gefunden und in v1.4 behoben (siehe Post #1).
Die technische Erklärung: Wenn der älteste Wert, der durch einen neuen Wert überschrieben wurde, ein Maximum war, dann muss ein neues Maximum aller Werte gefunden werden. Bei der Ermittlung werden die bereits ermittelten Teilmaxima von jeweils 10 Werten verwendet, um den Aufwand auf 1/10 zu reduzieren. Dabei darf man den ältesten Wert nicht verwenden, denn sonst entsteht der von Dir beschriebene Fehler. Durch den vorhergehenden Fehler trat dieser Fehler nicht auf.
Da ich selbst den Algorithmus verwende, bin ich für Feedback dankbar. Nur so kann ich Fehler finden und beheben. Ich hoffe, dass jetzt alles passt. Bei mir läuft seit gestern Abend die neue Version und es scheint alles zu passen.
Gruß JanMiniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
Node-RED: IKEA TradfriKommentar
-
Hallo Jan,
nach dem Update auf die Config 9 wurden bei mir im Baustein die oberen drei Zeilen hinzugefügt:
// *** PROGRAM DISABLED ***
// This PicoC program caused an error.
// Please find and correct the error and remove these three comment lines to enable this PicoC program again.
// Pico-C Script für Windmesser v1.4
Habe diese drei Zeilen entfernt und eine virtuellen Status an TeQ gehängt, um dann den Fehler angezeigt zu bekommen.
Momentan läuft es. Wie lange bis die Fehlermeldung auftaucht, wird sich zeigen. Dann würde ich mich nochmal melden.
Hat jemand von den Usern hier das Problem auch?
Gruß
FrankKommentar
-
Hallo v9-User,
habt Ihr irgendwelche Meldungen im Log, ähnlich zu https://www.loxforum.com/forum/germa...624#post112624
Mit ein paar Hinweisen kann ich den Fehler vielleicht beheben.
Gruß JanMiniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
Node-RED: IKEA TradfriKommentar
-
Giten Morgen,
ich habe auf meinen Loxone Projekt alle digitale Eingang belegt (Miniserver+Extension).
Da ich jetzt auch meine Markise über die Loxone steuern werde, benötige ich noch einen Windsensor. Um jetzt die Anschaffung von einer neuen Extension zu vermeiden, würde ich gerne einen windsensor auf einen analogen Eingang anschließen (0-10V)
hat hier jemand bereits Erfahrund & hat bereits ein Modell im Einsatz?
habe folgendes Modell gefunden:
Kommentar
-
Gast
Hallo,
Vermutlich wirst Du dafür einen Frequenzeingang benötigen.
Bei der Extension können die Digitalen Eingänge als Frequenzeingänge eingestellt werden.
Analoge Eingänge können auch als Digitaleingänge verwendet werden.
Sofern bei der Extension nicht alle Eingänge auf Frequenz eingestellt sind, könntest Du ja einen auf einen Analogeingang verlegen und den Windmesser an den Digitaleingang hängen.lg RomildoKommentar
Kommentar