Seite 2 von 6

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 13.03.2019, 13:11
von Andronid
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

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 13.03.2019, 15:12
von dtp
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.

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 14.03.2019, 09:01
von Andronid
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!

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 14.03.2019, 17:34
von dtp
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?

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 14.03.2019, 18:39
von Andronid
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

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 15.03.2019, 11:13
von dtp
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).

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 15.03.2019, 11:54
von Andronid
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?

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 18.03.2019, 19:25
von dtp
Nutzt du denn das zPNP?

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 19.03.2019, 10:02
von Andronid
Ja, nutze ich. Allerdings ohne Bilderversandt und nur die Pushnachrichten. Außerdem die Servicemeldungen "allinclusive" Skript.

Anmerkung: Ich habe jetzt mal dein Skript für die Stromzählerstände (nur Strom) eingebunden. Die SV werden gefüllt, aber auch hier bekomme ich keine Pushnachricht. Das scheint das Problem zu sein.

Re: Howto - kleines Skript zur Sturmmeldung

Verfasst: 20.03.2019, 14:04
von dtp
Und die lokale Variable

Code: Alles auswählen

! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch
ist in allen aufrufenden Skripten auf den Namen deines zPNP gesetzt?