Howto - kleines Skript zur Sturmmeldung

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

Moderator: Co-Administratoren

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

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 13.03.2019, 13:11

dtp hat geschrieben:
12.03.2019, 14:16
Nun ja, wenn's um die Einbindung der Netatmo geht, kann ich dich nur hier drauf verweisen.
Danke Thorsten, die Netatmo läuft bei mir schon eine ganze Weile erfolgreich mit. Ich hatte heute Morgen auf meinem Smartphone "HomeMatic Warnung Neue Servicemeldung" Allerdings nicht so wie bei dir "Achtung Strurm, Windstärke ..." Wo wird denn der Text erzeugt? Habe ich da etwas übersehen? Machmal sieht man ja den Wald vor lauter Bäumen nicht.

Gruß Reinhard

PS: Ich verwende Pushover
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: 5805
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 13.03.2019, 15:12

Was meinst du denn mit "wo wird der Text erzeugt"? Erzeugt wird er im Sturm-Skript mit der lokalen Variablen "message". Gesendet wird er dann über das zPNP. Die entsprechenden Zeilen zum Aufruf des zPNP lassen sich aber auch durch einen direkten Aufruf für Pushover ersetzen. Allerdings muss das dann jeder selbst für sich ändern.

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

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 14.03.2019, 09:01

Habe die Stelle gefunden, wo der Text erzeugt wird in deinem Skript. Leider funktioniert das bei mir mit den Daten von der Netatmo nicht. Schade!
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: 5805
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 14.03.2019, 17:34

Nun ja, deine Netatmo muss ja auch irgendwie eine Windgeschwindigkeit an die CCU übergeben. Wie macht sie das denn und welchen Inhalt hat der Parameter?

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

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 14.03.2019, 18:39

Das wird hier beschrieben: viewtopic.php?f=31&t=28188&hilit=howto+netatmo . Als "nur " Anwender kann ich das nicht so richtig beschreiben. Wenn du dir die Mühe machst es zu lesen, bin ich der Meinung, dass du es eher so verstehst als ich es erklären kann. :(
Ich habe alle Geräte , also für Niederschläge, Wind und Temperatur in der CCU im Verzeichnis /usr/local/addons/netatmo/ Mehr kann ich leider nicht dazu sagen.
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: 5805
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von dtp » 15.03.2019, 11:13

Das heißt, du hast bei dir auf der CCU eine Systemvariable "Windstaerke" angelegt, die die mit der Netatmo gemessene Windgeschwindigkeit in km/h enthält, oder?

Falls dem so ist, versuche es doch mal mit dem nachfolgenden Skript:

Code: Alles auswählen

! Meldung Sturm
! Version 2.5.3na, Autor: dtp
 
! 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 svWindSpeed = "Windstaerke"; ! per Netatmo gemessene Windgeschwindigkeit, 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_SYSTEM_VARIABLES).Get(svWindSpeed)).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();
}
Falls es Probleme gibt, zeig doch bitte mal einen Screenshot des Inhalts der Systemvariablen "Windstaerke" (WebUI -> Status und Bedienung -> Systemvariable).

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

Re: Howto - kleines Skript zur Sturmmeldung

Beitrag von Andronid » 15.03.2019, 11:54

Genau so ist es. Wenn ich wieder zu Hause bin probiere ich mal dein Skript gleich aus und werde berichten. Vielen Dank schon mal im Voraus!

Gruß Reinhard

So, jetzt habe ich dein neues Skript ersetzt und den Wert von 39 auf 3 geändert, da es im Augenblick wohl nicht so windig ist. Dann habe ich Das Programm ausführen lassen, da wurde zuerst der Wert der Variablen Windstaerke auf 0 gesetzt, dann aber auf 3:
Windstaerke 15.03.2019 16:30:06 3.00 km/h
PushText wurde wie folgt geändert:
CCU SV Push Text Aktuelle Push-Nachrichten 15.03.2019 16:24:59 Achtung, Starkwind!| Windstärke 1 (3.00 km/h)
Das sieht erst einmal alles sehr gut aus. Lediglich wurde keine Pushnachricht versandt. Muss ich da evtl. noch dort eine Einstellung anpassen?
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:

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

Antworten

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