Howto - zPNP Sturmwarnungen V2.8
Moderator: Co-Administratoren
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Hi Tino,
ich habe eine neue Version 2.8 hochgeladen, die das auffangen soll. Zudem legt sie die benötigte Systemvariable selbst an. Wenn du die Version 2.8 nutzen möchtest, solltest du daher deine bisherige Systemvariable löschen und dann der Anleitung im Startposting folgen. Du kannst es bei dir aber auch so lassen, wie es jetzt ist.
Gruß,
Thorsten
ich habe eine neue Version 2.8 hochgeladen, die das auffangen soll. Zudem legt sie die benötigte Systemvariable selbst an. Wenn du die Version 2.8 nutzen möchtest, solltest du daher deine bisherige Systemvariable löschen und dann der Anleitung im Startposting folgen. Du kannst es bei dir aber auch so lassen, wie es jetzt ist.
Gruß,
Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 507
- Registriert: 26.10.2016, 16:08
- System: CCU
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 15 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Supi. Mach ich mal bei Gelegenheit.
Glaube da muss noch die SV anders......
Schönen Abend noch..
Glaube da muss noch die SV anders......
Code: Alles auswählen
if(!svWindSpeedPeak){svWindSpeedPeak = "Haus SV Sturm Tag";}
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Sehr gut aufgepasst.
Hab's geändert.
Gruß,
Thorsten
Hab's geändert.
Gruß,
Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 269
- Registriert: 14.11.2018, 20:43
- System: CCU
- Wohnort: Bayern
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 17 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Hallo Thorsten,
besteht die Möglichkeit dieses Script auch nur über SV zu bedienen ?
Ich lese die Daten auf IObroker von Proplanta aus und habe alle Wichtigen Daten somit als SV zur Verfügung.
Habe versucht es über die Einbindung der SV zu machen leider ohne Erfolg.
Hättest du evtl. einen Tipp ??
Merci
besteht die Möglichkeit dieses Script auch nur über SV zu bedienen ?
Ich lese die Daten auf IObroker von Proplanta aus und habe alle Wichtigen Daten somit als SV zur Verfügung.
Habe versucht es über die Einbindung der SV zu machen leider ohne Erfolg.
Hättest du evtl. einen Tipp ??
Merci
Gruß André
-
- Beiträge: 269
- Registriert: 14.11.2018, 20:43
- System: CCU
- Wohnort: Bayern
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 17 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Hallo Thorsten,
vielleicht ist meine vorangegangenen Frage bei dir untergegangen ?
vielleicht ist meine vorangegangenen Frage bei dir untergegangen ?
Gruß André
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Hallo André,
sorry, war die letzte Zeit ziemlich mit meinem neuen iPhone 12 Pro beschäftigt.
Zu deiner Frage. Wie sieht denn der Inhalt deiner Systemvariablen aus? Wenn die irgendwie die Windgeschwindigkeit in km/h und die Windrichtung in Grad enthalten, dann ist die Umstellung kein großes Ding. Oder sind diese Daten in einer Systemvariablen zusammengefasst? Keine Sorge, auch dann könnte man sie auslesen.
Zeig mir doch bitte mal die Systemvariable(n) und deren Inhalt(e).
Gruß,
Thorsten
sorry, war die letzte Zeit ziemlich mit meinem neuen iPhone 12 Pro beschäftigt.
Zu deiner Frage. Wie sieht denn der Inhalt deiner Systemvariablen aus? Wenn die irgendwie die Windgeschwindigkeit in km/h und die Windrichtung in Grad enthalten, dann ist die Umstellung kein großes Ding. Oder sind diese Daten in einer Systemvariablen zusammengefasst? Keine Sorge, auch dann könnte man sie auslesen.
Zeig mir doch bitte mal die Systemvariable(n) und deren Inhalt(e).
Gruß,
Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 269
- Registriert: 14.11.2018, 20:43
- System: CCU
- Wohnort: Bayern
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 17 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Windgeschwindigkeit ist in km/h
Windrichtung ist einmal in z.B. NNO und einmal in Klartext NordOst beides verfügbar
Windrichtung ist einmal in z.B. NNO und einmal in Klartext NordOst beides verfügbar
Gruß André
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Versuch's mal damit:
Ist aber ungetestet (auch, was Syntaxfehler angeht), da ich gerade im Büro sitze.
Code: Alles auswählen
! Meldung Sturm
! Version 2.8.1a, Autor: dtp
! Namen der verwendeten Systemvariablen
string svWindSpeed = "Windgeschwindigkeit";
string svWindDir = "Windrichtung";
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svWindSpeedPeak = "Haus SV Sturm Höchstwert"; ! Höchstgeschwindigkeit des Windes, 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 wind; string windSpeed; string windSpeedDayMax; string windIndex;
string message; string fontColor1 = ""; string fontColor2 = ""; string bargraph = "";
string windForceTable = "1\t6\t12\t20\t29\t39\t50\t62\t75\t89\t103\t118";
integer windForce = 0; integer windDir = 0; integer prio = 0;
real barIndex = 0.0;
object svObject; object svObjectList;
! +++++ Systemvariable für die Höchstgeschwindigkeit des Windes auslesen und ggf. anlegen +++++
if(!svWindSpeedPeak){svWindSpeedPeak = "Haus SV Sturm Höchstwert";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeedPeak);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svWindSpeedPeak); svObject.DPInfo("Höchstgeschwindigkeit des Windes"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit("km/h"); svObject.ValueMin(0); svObject.ValueMax(65000); dom.RTUpdate(true);
}
else{windSpeedDayMax = svObject.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 und -richtung +++++
windSpeed = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeed)).Value();
windDir = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindDir)).Value();
! +++++ Nachricht senden, wenn Windgeschwindigkeit zugenommen hat +++++
if(windSpeed > windSpeedDayMax){
! ----- Setzen der Höchstgeschwindigkeit des Windes -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeedPeak)).State(windSpeed);
! ----- Umwandlung der Windgechwindigkeit in Windstärke -----
foreach(windIndex, windForceTable){if(windSpeed >= windIndex){windForce = windForce+1;}}
! ----- Erzeugung der Begriffe in Abhängigkeit von der Windstärke -----
if(windForce == 12){wind = "Orkan"; prio = 2; fontColor1 = "<font color=red>"; fontColor2 = "</font>";}
elseif(windForce == 11){wind = "orkanartiger Sturm"; prio = 2; fontColor1 = "<font color=red>"; fontColor2 = "</font>";}
elseif(windForce == 10){wind = "schwerer Sturm"; prio = 1; fontColor1 = "<font color=red>"; fontColor2 = "</font>";}
elseif(windForce == 9){wind = "Sturm"; prio = 1; fontColor1 = "<font color=orange>"; fontColor2 = "</font>";}
elseif(windForce >= 7){wind = "Starkwind"; prio = 1; fontColor1 = "<font color=orange>"; fontColor2 = "</font>";}
else{wind = "Wind"; prio = 0; fontColor1 = ""; fontColor2 = "";}
! ----- Berechnung des Bargraphs -----
while((barIndex < windForce) && (barIndex <= (range - range/bars))){
bargraph = bargraph#"|";
barIndex = barIndex + range/bars;
}
! +++++ Setzen der Priorität für die Push-Nachricht +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State(prio);
! +++++ Erzeugen der Nachricht +++++
message = fontColor1#"Achtung, "#wind#" aus "#windDir#"!"#fontColor2#"\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();
}
Zuletzt geändert von dtp am 18.11.2020, 14:55, insgesamt 2-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 269
- Registriert: 14.11.2018, 20:43
- System: CCU
- Wohnort: Bayern
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 17 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Hallo Thorsten,
leider bekomme ich beim testen keine Werte angezeigt. Irgendwo in diesem Teil scheint noch ein Fehler zu sein
wenn ich folgenden Teil auskommentiere bekomme ich teilweise Werte.
Die SV "Haus SV Sturm Höchstwert" ist von mir angelegt als Typ Zahl. Also vorhanden. Wenn ich das auskommentierte teste bekomme ich folgende Werte.
lasse ich es wie du es gepostet hast bekomme ich folgenden Fehler im CUxD log
Vielleich hast du nochmals Zeit dir das anzusehen
Merci
leider bekomme ich beim testen keine Werte angezeigt. Irgendwo in diesem Teil scheint noch ein Fehler zu sein
Code: Alles auswählen
! +++++ Systemvariable für die Höchstgeschwindigkeit des Windes auslesen und ggf. anlegen +++++
if(!svWindSpeedPeak){svWindSpeedPeak = "Haus SV Sturm Höchstwert";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeedPeak);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svWindSpeedPeak); svObject.DPInfo("Haus SV Sturm Höchstwert"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit("km/h"); svObject.ValueMin(0); svObject.ValueMax(65000); dom.RTUpdate(true);
}
else{windSpeedDayMax = svObject.Value();}
Code: Alles auswählen
! +++++ Systemvariable für die Höchstgeschwindigkeit des Windes auslesen und ggf. anlegen +++++
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svWindSpeedPeak); svObject.DPInfo("Haus SV Sturm Höchstwert"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit("km/h"); svObject.ValueMin(0); svObject.ValueMax(65000); dom.RTUpdate(true);
}
else{windSpeedDayMax = svObject.Value();}
Code: Alles auswählen
"fontColor2": "",
"windDir": "WSW",
"windForceTable": "1 6 12 20 29 39 50 62 75 89 103 118",
"sessionId": "",
"prio": "0",
"windSpeed": "0.000000",
"STDOUT": "",
"barIndex": "0.000000",
"svWindSpeedPeak": "Haus SV Sturm Höchstwert",
"bargraph": "",
"windSpeedDayMax": "",
"svObject": "null",
"zPNP": "CCU PRG Push-Nachrichten",
"bars": "12.000000",
"windForce": "0",
"windIndex": "",
"wind": "",
"svWindDir": "SV_WETTER_Windrichtung_txt",
"svPushPrio": "CCU SV Push Prio",
"svWindSpeed": "SV_WETTER_Windgeschwindigkeit",
"message": "",
"range": "12.000000",
"httpUserAgent": "",
"svPushText": "CCU SV Push Text",
"svPushoverSound": "CCU SV Pushover Sound",
"fontColor1": ""
Code: Alles auswählen
Nov 16 08:25:57 ccu3-webui local0.err ReGaHss: ERROR: SyntaxError: Error 1 at row 33 col 13 near ^){ svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.Create^M [SyntaxError():iseESP.cpp:1137]
Nov 16 08:25:57 ccu3-webui local0.err ReGaHss: ERROR: SyntaxError: ){ svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID()); svObject.Name(svWindSpeedPeak); svObject.DPInfo("Haus SV Sturm Höchstwert"); svObject.Internal(false); svObject.Visible(true); svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit("km/h"); svObject.ValueMin(0); svObject.ValueMax(65000); dom.RTUpdate(true); } else{windSpeedDay
ax = svObject.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 und -richtung +++++ windSpeed = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindSpeed)).Value(); windDir = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svWindDir)).Value(); ! +++++ Nachricht senden, wenn Windgeschwindigkeit zugenommen hat +++++ if(windSpeed > windSpeedDayMa
){ ! ----- Setze
Merci
Gruß André
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - kleines Skript zur Sturmmeldung
Uff. Fehler meinerseits. Da fehlte die Variablendeklaration für svObject und svObjectList. Hab's oben geändert.
Der Fehler bestand auch im Original-Skript des Ausgangspostings. Hab's auch dort geändert.
Danke dir für's Finden.
Der Fehler bestand auch im Original-Skript des Ausgangspostings. Hab's auch dort geändert.
Danke dir für's Finden.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.