Howto - kleines Skript zur Sturmmeldung

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

dtp
Beiträge: 6359
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 15.01.2017, 14:45

Hallo,

da ich noch nicht so ganz zufrieden war mit meinem Sturmmelde-Programm und -Skript, habe ich es etwas modifiziert. Vielleicht ist es ja eine Anregung für den Einen oder Anderen hier. Die letzten Zeilen des Skripts dienen zum Aufruf des zPNP, können aber natürlich recht einfach durch andere Codezeilen ersetzt werden.

Hier der Skriptcode:

Code: Alles auswählen

! Meldung Sturm
! Version 2.5.3, Autor: dtp
 
! Name von Kanal 1 des Funk-Kombisensors
string channel = "DG Dach Wettersensor";

! Namen der verwendeten Systemvariablen
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svWindSpeedDayMax = "Haus SV Sturm Tag"; ! Tageswindhöchstgeschwindigkeit, obligatorisch
string svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional
 
! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch
 
! Bargraph der Windstärken
real range = 12.0; ! Maximalwert des darzustellenden Bereichs
real bars = 12.0; ! Anzahl Bars innerhalb range
 
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
 
! +++++ Deklaration weiterer Variablen +++++
string bargraph = ""; string message; string windSpeed; string windSpeedDayMax; string windIndex;
string windForceTable = "1\t6\t12\t20\t29\t39\t50\t62\t75\t89\t103\t118"; 
integer windForce = 0;
real barIndex = 0.0;

! +++++ Systemvariable für die Tageswindhöchstgeschwindigkeit auslesen +++++
windSpeedDayMax = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeedDayMax)).Value();

! +++++ Sound für Pushover-Nachricht +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("siren");}

! +++++ Aktuelle Windgeschwindigkeit +++++
windSpeed = (dom.GetObject(ID_CHANNELS).Get(channel)).DPByHssDP("WIND_SPEED").Value();

! +++++ Nachricht senden, wenn Windgeschwindigkeit zugenommen hat +++++
if(windSpeed > windSpeedDayMax){
  ! ----- Setzen der Tageswindhöchstgeschwindigkeit -----
  windSpeedDayMax = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("Haus SV Sturm Tag")).State(windSpeed);

  ! ----- Umwandlung in Windstärken -----
  foreach(windIndex, windForceTable){if(windSpeed >= windIndex){windForce = windForce+1;}}
  ! ----- Berechnung des Bargraphs -----
  while((barIndex < windForce) && (barIndex <= (range - range/bars))){
    bargraph = bargraph#"|";
    barIndex = barIndex + range/bars;
  }

  if(windForce >= 7){
    ! +++++ Setzen der Priorität für die Push-Nachricht +++++
    (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("1");

    ! +++++ Erzeugen der Nachricht +++++
    message = "<font color=red>Achtung, Sturm!</font>\n"#bargraph#" Windstärke "#windForce#" ("#windSpeed.ToString(2)#" km/h)";
  }
  else{
    ! +++++ Setzen der Priorität für die Push-Nachricht +++++
    (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("0");

    ! +++++ Erzeugen der Nachricht +++++
    message = "<font color=orange>Achtung, Starkwind!</font>\n"#bargraph#" Windstärke "#windForce#" ("#windSpeed.ToString(2)#" km/h)";
  }
 
  ! +++++ Programm "CCU PRG Push-Nachrichten" ausführen ++++
  (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
  (dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();
}

In der Zeile

Code: Alles auswählen

string channel = "DG Dach Wettersensor";
einfach den Namen von Kanal 1 eures Komibsensors eintragen.

Zudem muss eine Systemvariable für die Tageswindhöchstgeschwindigkeit vom Typ Zahl eingerichtet werden. Deren Namen gebt ihr einfach in die Codezeile

Code: Alles auswählen

string svWindSpeedDayMax = "Haus SV Sturm Tag"; ! Tageswindhöchstgeschwindigkeit
ein.

Und hier das zugehörige WebUI-Programm:
Haus PRG Sturm.png
Zum Testen habe ich die Auslöseschwelle auf 10 km/h gesetzt. Für den Regelbetrieb empfiehlt sich jedoch, die Schwelle auf 39 km/h entsprechend Windstärke 5 oder dergleichen zu erhöhen, da das Programm sonst zu häufig Sturm melden würde.

So sieht die Push-Nachricht aus, die das Programm unter Telegram erzeugt.
Sturmmeldung.PNG
Die Windgeschwindigkeit wird in die entsprechende Windstärke umgerechnet und zusäztlich noch als Bargraph angezeigt. Der Bargraph zeigt pro Windstärke ein Segment an, kann aber durch Änderung der Werte "range" und "bars" entsprechend angepasst werden, was aber im vorliegenden Fall nicht sehr viel Sinn machen dürfte. Da es sich um einen universellen Code zur Bargraph-Anzeige handelt, den ich auch in anderen Skripten z.B. zur Gas- und Stromwert-Ausgabe nutze, habe ich ihn so belassen.

Das Skript ist so programmiert, dass eine Push-Nachricht nur dann abgesendet wird, wenn sich die Windgeschwindigkeit gegenüber dem bisher höchsten Tageswert erhöht hat. Jeweils um 0:00 Uhr wird der Tageshöchstwert wieder auf null gesetzt.

Viel Spaß beim Anwenden.

Gruß,

Thorsten
Zuletzt geändert von dtp am 11.03.2019, 14:23, insgesamt 10-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container, Homebridge auf Raspberry Pi 3B+;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
DiJe
Beiträge: 517
Registriert: 04.03.2015, 05:51

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von DiJe » 23.09.2018, 09:00

Hallo Thorsten,
bin zufällig auf dein Script gestossen.
Ich nutze ja schon dein Stromscript.
Auch dieses hier läuft, wie gewohnt bei dir , super.
Danke für dein teilen mit uns.
Gruß Dieter
Gruß Dieter

duralis
Beiträge: 13
Registriert: 31.12.2015, 15:29

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von duralis » 23.09.2018, 20:38

Ich hatte bisher auch nur ein Programm ohne Script, habe aber nun mal dein Script eingebaut.

dtp
Beiträge: 6359
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 26.09.2018, 16:50

Ich habe da noch was überarbeitet, da wir am letzten Samstag mit Sturmmeldungen überschüttet wurden.

Das Skript fängt zwar ab, dass man jedes Mal bei Überschreiten der Schwelle eine Meldung erhält, indem es den aktuellen mit dem vorherigen Wert vergleicht, aber das hilft nur bedingt. Der Kombisensor schickt ja ca. alle drei Minuten einen Messwert raus. Somit kann es im Worst Case passieren, dass man alle sechs Minuten eine Push-Nachricht mit einer Sturmwarnung erhält, wenn es stark böig ist.

Die Änderung sieht nun eine Art Peak-Hold-Funktion vor. Dazu wird bei Überschreiten des Schwellwerts eine Systemvariable mit dem bisherigen Tageshöchstwert beschrieben und nur noch dann eine Push-Nachricht gesendet, wenn der aktuelle Messwert über diesem Tageshöchstwert liegt. Um 00:00 Uhr wird die Systemvariable dann wieder genullt.

Skript und Programm folgen.

Bis dann,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container, Homebridge auf Raspberry Pi 3B+;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Micha121
Beiträge: 203
Registriert: 21.12.2016, 23:53
Wohnort: Rheinland-Pfalz

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Micha121 » 11.03.2019, 03:58

Hi dtp,

ich wollte Dich mal fragen, ob Du bei dem Projekt weitergearbeitet hast? Weil Du geschrieben hast:
dtp hat geschrieben:
26.09.2018, 16:50
Skript und Programm folgen.

Bis dann,

Thorsten
Nachtrag: Funktioniert dies auch mit dem HM-IP-SWO-PL, also der Wetterstation von HM IP? Falls nicht - könntest Du das zugehörige Skript ggf. auch zur Verfügung stellen?


Viele Grüße

dtp
Beiträge: 6359
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 11.03.2019, 07:21

Das ist schon im Ausgangsposting mit Version 2.5 des Skripts enthalten gewesen. Hatte das zwischenzeitlich aktualisiert. Gab jetzt noch ein paar kleinere kosmetische Änderungen in der Version 2.5.2.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container, Homebridge auf Raspberry Pi 3B+;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Andronid
Beiträge: 237
Registriert: 06.03.2012, 17:52
Wohnort: Beelitz

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 11.03.2019, 14:03

Hallo Thorsten,
bei mir kommt im Test des Programms (Fehlerprüfung) folgende Meldung:
" Error 1 at row 68 col 59 near ^)).ProgramExecute();
}
Error 1 at row 68 col 59 near ^)).ProgramExecute();
}
Parse following code failed: "
Allerdings nutze ich die Wetterdaten von Netatmo, habe aber ansonsten alles so angegeben, wie in deinem Howto. Vielleicht kannst du helfen?

Gruß Reinhard
Beste Grüße
Andronid


--------------------------------------------------------------------------------------------------------
RaspiMatic, Fw: 3.43.15, 132 Kanäle in 66 Geräten und 48 CUxD-Kanäle in 3 CUxD-Geräten:

---------------------------------------------------------------------------------------------------------

dtp
Beiträge: 6359
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 11.03.2019, 14:21

Hallo Reinhard,

da war ein Umbruch nicht in Ordnung. Hab's gefixt. Nun sollte es gehen.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container, Homebridge auf Raspberry Pi 3B+;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Andronid
Beiträge: 237
Registriert: 06.03.2012, 17:52
Wohnort: Beelitz

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 12.03.2019, 14:02

Hallo Thorsten,
vielen Dank. Hat funktioniert. Nun wird kein Fehler angezeigt. Jetzt will ich hoffen, dass ich auch die richtigen Variablen aus der Netatmo abgreife. Gerade ist es mal wieder etwas windstill.

Gruß Reinhard
Beste Grüße
Andronid


--------------------------------------------------------------------------------------------------------
RaspiMatic, Fw: 3.43.15, 132 Kanäle in 66 Geräten und 48 CUxD-Kanäle in 3 CUxD-Geräten:

---------------------------------------------------------------------------------------------------------

dtp
Beiträge: 6359
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 12.03.2019, 14:16

Nun ja, wenn's um die Einbindung der Netatmo geht, kann ich dich nur hier drauf verweisen.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container, Homebridge auf Raspberry Pi 3B+;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“