Unwetterwarnung Script
Moderator: Co-Administratoren
- klana
- Beiträge: 1093
- Registriert: 08.02.2015, 08:37
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 57 Mal
- Danksagung erhalten: 26 Mal
Re: Unwetterwarnung Script
Hallo Leute,
sorry, aber das Thema wird wohl noch etwas warten müssen.
Ich muss mich vorrangig um einen Pflegefall kümmern.
Vielleicht findet sich jemand der kurzfristig weitermacht?
Gruß
klana
sorry, aber das Thema wird wohl noch etwas warten müssen.
Ich muss mich vorrangig um einen Pflegefall kümmern.
Vielleicht findet sich jemand der kurzfristig weitermacht?
Gruß
klana
Gruß Klana
Es ist nett, wichtig zu sein. Aber es ist wichtiger, nett zu sein.
Es ist nett, wichtig zu sein. Aber es ist wichtiger, nett zu sein.
-
- Beiträge: 119
- Registriert: 15.04.2015, 11:39
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
@klana: Ich wünsche Dir viel Kraft und alles Gute für Dich und Familie
---
Ganz offentlichtlich hat DWD mal wieder an der JSON-Datei rumgeschraubt. Ich habe gestern wieder Wetterwarnungen bekommen, die nur teilweise korrekt waren. Die Reihenfolge hat sich geändert und ich habe die Reihenfolge der Felder in Klanas Variante umgestellt und stelle diese Änderung hier zur Verfügung. Ich selber setze das Script mit anderen Variablennamen ein, sodass ich zwar meine Variablen mit der neuen Reihenfolge testen kann, nicht aber Klanas Reihenfolge. Vielleicht kann ja jemand Rückmeldung geben, ob das Script auch bei Ihr/Ihm so funktioniert.
EDIT: Einen Fehler bei StateShort ausgebessert am 04.02.2018
---
Ganz offentlichtlich hat DWD mal wieder an der JSON-Datei rumgeschraubt. Ich habe gestern wieder Wetterwarnungen bekommen, die nur teilweise korrekt waren. Die Reihenfolge hat sich geändert und ich habe die Reihenfolge der Felder in Klanas Variante umgestellt und stelle diese Änderung hier zur Verfügung. Ich selber setze das Script mit anderen Variablennamen ein, sodass ich zwar meine Variablen mit der neuen Reihenfolge testen kann, nicht aber Klanas Reihenfolge. Vielleicht kann ja jemand Rückmeldung geben, ob das Script auch bei Ihr/Ihm so funktioniert.
Code: Alles auswählen
! ------ DWD Unwetterwarnung 28.01.2018 Vers. 1.03 ---------------------------------
! Unwetterwarnungsscript von Grrzzz / klana
! Version 1.03 vom 28.01.2018
! Erweitert von klana
! - Alle Felder aus DWD Meldung auslesen
! - umfangreiches Debugging
! - korrektur Startdatum
! - Ausgabe der Meldung jetzt mit Headline anstelle von event
! - und noch eniges mehr...
! - Erstellung Einmalscript für automatische Erstellung bzw. Loeschung der Systemvariablen
! - Fehlerfaelle besser abfagen
! - Erweiterung um Datum und Uhrzeit für Start und End einschl. Systemvariablen
! - Boolean Variable damit auch die Vorabinformation angezeigt werden kann (s.u.)
! Neusortierung durch Tharanis wegen Aenderungen bei DWD
!
! ToDo - bekannte Fehler:
! - Auswertung der Level und Typen stimmt irgenwie noch nicht...
!
! https://homematic-forum.de/forum/viewtopic.php?f=31&t=38161
!------------------------------------------------------------------------------------------------------------
!------------------------------------------------------------------------------------------------------------
! Konfiguration
!------------------------------------------------------------------------------------------------------------
! Anzulegen fuer das Script Wetterwarn_DWD sind die
! folgenden Systemvariablen, welche besser über das Einmalsscript angelegt werden.
! Das Einmalscript unter Script testen eingefügt und einmalig ausführen.
! --------------------------------------------------------------
! Wetterwarnung_Aktiv Boolean
! Wetterwarnung_Text Zeichenkette (für Ausgabe)
! --------------------------------------------------------------
! Wetterwarnung_city Zeichenkette (Nummer zum Suchen)
! Wetterwarnung_regionName Zeichenkette
! Wetterwarnung_start Zeichenkette
! Wetterwarnung_end Zeichenkette
! Wetterwarnung_startDateTime Zeichenkette
! Wetterwarnung_endDateTime Zeichenkette
! Wetterwarnung_level Zahl
! Wetterwarnung_typ Werteliste mit: unbekannt;Gewitter;Wind/Sturm/Orkan;Stark- und Dauerregen;Schneefall/Schneeverwehungen;Nebel;Frost;Glaette/Glatteis;Tauwetter;Hitzewarnungen;UV-Warnungen;Kuestenwarnungen;Binnenseewarnungen
! Wetterwarnung_state Zeichenkette
! Wetterwarnung_description Zeichenkette
! Wetterwarnung_event Zeichenkette
! Wetterwarnung_headline Zeichenkette
! Wetterwarnung_instruction Zeichenkette
! Wetterwarnung_stateShort Zeichenkette
! Wetterwarnung_altitudeStart Zeichenkette
! Wetterwarnung_altitudeEnd Zeichenkette
!
!------------------------------------------------------------------------------------------------------------
!------------------------------------------------------------------------------------------------------------
! Debugging einschalten = true oder aussschalten = false
! z.B. zum Test unter "Script testen"
!
! ShowVorabInfo = false -> es wird keine Vorabwarnung angezeigt,
! = true -> es wird auch die Vorabwarnung angezeigt
! noch nicht aktiv
!------------------------------------------------------------------------------------------------------------
boolean debug = false;
! boolean ShowVorabInfo = false;
! --------------------------------------------------------------
! Virtuelles CUxD-Exec-Device hier angeben
! --------------------------------------------------------------
string execdevice = "CUxD.CUX2801001:1";
! --------------------------------------------------------------
! Die Region-ID aus der JSON Datei raussuchen, dazu diese Adresse
! im Browser eingeben:
! https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
! Für Berlin z.B. 111000000
! --------------------------------------------------------------
string city = "105362000"; ! Rhein-Erft Kreis
! string city = "109763000"; ! Testort Rhein-Sieg Kreis
! --------------------------------------------------------------
! Nötige CCU-Systemvariablen zuweisen
! In der CCU anzulegende Systemvariablen stehen nachfolgend in Anführungszeichen
! Am Besten mit dem "Einmalscript" automatisch anlegen lassen!
! _Text und _Aktiv sind Anfangsbuchstabe nach Unterstrich gross und
! alle DWD Felder sind Anfangsbuchstabe nach Unterstrich klein geschrieben
! --------------------------------------------------------------
! Eigene Felder
string wwText = "Wetterwarnung_Text";
string wwAktiv = "Wetterwarnung_Aktiv";
! DWD Felder
string wwCity = "Wetterwarnung_city";
string wwRegionName = "Wetterwarnung_regionName";
string wwStart = "Wetterwarnung_start";
string wwEnd = "Wetterwarnung_end";
string wwStartDateTime = "Wetterwarnung_startDateTime";
string wwEndDateTime = "Wetterwarnung_endDateTime";
string wwLevel = "Wetterwarnung_level";
string wwTyp = "Wetterwarnung_typ";
string wwState = "Wetterwarnung_state";
string wwDescription = "Wetterwarnung_description";
string wwEvent = "Wetterwarnung_event";
string wwHeadline = "Wetterwarnung_headline";
string wwInstruction = "Wetterwarnung_instruction";
string wwStateShort = "Wetterwarnung_stateShort";
string wwAltitudeStart = "Wetterwarnung_altitudeStart"; ! Wird noch nicht genutzt
string wwAltitudeEnd = "Wetterwarnung_altitudeEnd"; ! Wird noch nicht genutzt
!------------------------------------------------------------------------------------------------------------
! Ausgabe in Systemvariable fuer Push (fuer spaetere Erweiterung)
!------------------------------------------------------------------------------------------------------------
string PushVar = "SV_PushMessage";
!------------------------------------------------------------------------------------------------------------
! Das wars an Konfiguration
! DWD-Warntabelle in 25k(+25k)-Abschnitten laden bis die Region gefunden wurde
!------------------------------------------------------------------------------------------------------------
string url = "https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json";
string downloader = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
integer rangefrom = 0;
integer rangeto = 25000;
integer loopcounter = 1;
integer find1 = 0;
boolean found = false;
string stdout = "";
string cmd = downloader # " --range " # rangefrom # "-" # rangeto # " " # url;
string cut2 = "],";
var ret ;
string strRest = "";
!------------------------------------------------------------------------------------------------------------
! Los gehts...
!------------------------------------------------------------------------------------------------------------
if(debug){WriteLine("cmd : "#cmd);}
ret= dom.GetObject(execdevice # ".CMD_SETS").State(cmd);
if(debug){WriteLine("ret cmd_sets : "#ret);}
ret = dom.GetObject(execdevice # ".CMD_QUERY_RET").State(1);
if(debug){WriteLine("ret cmd_query_ret: "#ret);}
stdout = dom.GetObject(execdevice # ".CMD_RETS").State();
if(debug) {WriteLine("stdout cmd_rets : " #stdout);}
if (stdout)
{
find1 = stdout.Find(city);
if ((find1 >= 0) && (stdout.Length() >= 25000)) {
rangefrom = rangeto - 99;
rangeto = rangeto + 24900;
cmd = downloader # " --range " # rangefrom # "-" # rangeto # " " # url;
dom.GetObject(execdevice # ".CMD_SETS").State(cmd);
dom.GetObject(execdevice # ".CMD_QUERY_RET").State(1);
stdout = stdout + dom.GetObject(execdevice # ".CMD_RETS").State();
}
while ((find1 < 0) && (stdout.Length() >= 25000) && (loopcounter <= 30)) {
loopcounter = loopcounter + 1;
rangefrom = rangeto - 99;
rangeto = rangeto + 24900;
cmd = downloader # " --range " # rangefrom # "-" # rangeto # " " # url;
dom.GetObject(execdevice # ".CMD_SETS").State(cmd);
dom.GetObject(execdevice # ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject(execdevice # ".CMD_RETS").State();
find1 = stdout.Find(city);
if ((find1 >= 0) && (stdout.Length() >= 25000)) {
rangefrom = rangefrom + 25000;
rangeto = rangeto + 25000;
cmd = downloader # " --range " # rangefrom # "-" # rangeto # " " # url;
dom.GetObject(execdevice # ".CMD_SETS").State(cmd);
dom.GetObject(execdevice # ".CMD_QUERY_RET").State(1);
stdout = stdout + dom.GetObject(execdevice # ".CMD_RETS").State();
}
}
found = false;
if(stdout.Find(city)>=0) {
found = true;
}
}
if(city) {dom.GetObject(wwCity).State(city);}
!------------------------------------------------------------------------------------------------------------
! Relevanter Bereich ausschneiden und zuweisen
!------------------------------------------------------------------------------------------------------------
if(found) {
if(debug) {WriteLine("Suche nach City :"#city);}
! gesuchten Bereich komplett ausschneiden und mit ToLatin() umwandeln
stdout = stdout.Substr(stdout.Find(city));
stdout = stdout.Substr(0, stdout.Find(cut2)+1).ToLatin();
if(debug) {WriteLine("stdout nach Find(City): " #stdout);}
! Hier können jetzt mehr als 1 Meldung vorhanden sein
! Diese sind durch geschweifte Klammen getrennt
! Wie kann man diese Auswerten, da zur Zeit immer nur die erste genommen wird?
! regionName (Klartext der gesuchten Region z.B. Rhein-Erft-Kreis)
stdout = stdout.Substr(stdout.Find("regionName")+13);
var regionName = stdout.Substr(0, stdout.Find(",")-1).Trim();
if(debug) {WriteLine("regionName: "#regionName);}
if(regionName) {dom.GetObject(wwRegionName).State(regionName);}
! start (Uhrzeit ab der die DWD Meldung gültig ist in Sekunden)
stdout = stdout.Substr(stdout.Find("start")+7);
if(stdout.Substr(0,4) == "null")
{
var start = stdout.Substr(0, stdout.Find(",")-0).Trim();
}
else
{
var start = stdout.Substr(0, stdout.Find(",")-3).Trim();
}
if(debug) {WriteLine("Start stdout : " #stdout);}
!Bei Inhalt null keine Anfuehrungszeichen
if(debug) {WriteLine("start : " #start);}
if(start) {dom.GetObject(wwStart).State(start);}
! end (Uhrzeit bis zu der die DWD Meldung gültig ist in Sekunden)
stdout = stdout.Substr(stdout.Find("end")+5);
if(stdout.Substr(0,4) == "null")
{
var end = stdout.Substr(0, stdout.Find(",")-0).Trim();
}
else
{
var end = stdout.Substr(0, stdout.Find(",")-3).Trim();
}
if(debug) {WriteLine("end : " #end);}
if(end) {dom.GetObject(wwEnd).State(end);}
if(debug) {WriteLine("End stdout : " #stdout);}
!Bei Inhalt null keine Anfuehrungszeichen
! Umrechnung in Date und Time neu 16.11.2017
if(debug) {WriteLine("Start DateTime: " #start.ToInteger().ToTime().ToString());}
if(debug) {WriteLine("End DateTime: " #end.ToInteger().ToTime().ToString());}
dom.GetObject(wwStartDateTime).State(start.ToInteger().ToTime().ToString());
dom.GetObject(wwEndDateTime).State(end.ToInteger().ToTime().ToString());
!Level - Vermutung 0 = Vorabwarnung, 1..10 tatsächliche Warnungen
stdout = stdout.Substr(stdout.Find("level")+7);
var level = stdout.Substr(0, stdout.Find(","));
if(debug) {WriteLine("level :"#level);}
if(level) {dom.GetObject(wwLevel).State(level);}
!In folgender Tabelle sind Warntypen mit ? markiert, die noch nicht in der Praxis getestet werden konnten!
!0 = Gewitter
!1 = Wind/Sturm/Orkan
!2 = Stark- und Dauerregen
!3 = Schneefall/Schneeverwehungen
!4 = Nebel ?
!5 = Frost
!6 = Glätte/Glatteis
!7 = Tauwetter ?
!8 = Hitzewarnungen ?
!9 = UV-Warnungen ?
!10 = Küstenwarnungen ?
!11 = Binnenseewarnungen ?
! type (siehe Liste oben)
stdout = stdout.Substr(stdout.Find("type")+6);
var mtyp = stdout.Substr(0, stdout.Find(","));
if(debug) {WriteLine("mtyp :"#mtyp);}
if(mtyp) {dom.GetObject(wwTyp).State(mtyp);}
! state (Bundesland im Klartext z.B: Nordrhein-Westfalen)
stdout = stdout.Substr(stdout.Find("state")+8);
var state = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("state :"#state);}
if(state) {dom.GetObject(wwState).State(state);}
! description (nähere Erklärung der Meldung im Klartext)
stdout = stdout.Substr(stdout.Find("description")+14);
var descript = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("descript :"#descript);}
if(descript) {dom.GetObject(wwDescription).State(descript);}
! headline (Überschrift der Meldung z.B. Amtliche WARNUNG vor WINDBÖEN)
stdout = stdout.Substr(stdout.Find("headline")+11);
var headline = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("headline :"#headline);}
if(headline) {dom.GetObject(wwHeadline).State(headline);}
! event (Kurzform der Meldungsart z.B. Winböen)
stdout = stdout.Substr(stdout.Find("event")+8);
var event = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("event :"#event);}
if(event) {dom.GetObject(wwEvent).State(event);}
! instruction (Was sollte man tun im Klartext z.B. bleibt alle Zuhause ;-)
stdout = stdout.Substr(stdout.Find("instruction")+14);
var instruction = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("instruction :"#instruction);}
if(instruction) {dom.GetObject(wwInstruction).State(instruction);}
! stateShort (Abkürzung Bundesland z.B: NRW)
stdout = stdout.Substr(stdout.Find("stateShort")+13);
var stateShort = stdout.Substr(0, stdout.Find(",")-1);
if(debug) {WriteLine("stateShort :"#stateShort);}
if(stateShort) {dom.GetObject(wwStateShort).State(stateShort);}
! altitude Start
stdout = stdout.Substr(stdout.Find("altitudeStart")+15);
var altitudeStart = stdout.Substr(0, stdout.Find(","));
if(debug) {WriteLine("altitudeStart :"#altitudeStart);}
if(altitudeStart) {dom.GetObject(wwAltitudeStart).State(altitudeStart);}
! altitude End
stdout = stdout.Substr(stdout.Find("altitudeEnd")+13);
var altitudeEnd = stdout.Substr(0, stdout.Find(","));
if(debug) {WriteLine("altitudeEnd :"#altitudeEnd);}
if(altitudeEnd) {dom.GetObject(wwAltitudeEnd).State(altitudeEnd);}
if (debug) {WriteLine("Laenge Rest:"#stdout.Length());}
!Vorabinformationen sind auch zu filtern
! if(event.Find("VORABINFORMATION")>=0) && (ShowVorabInfo == false)) {
if(event.Find("vorabinformation")>=0) {
found = false;
if(debug) {WriteLine("if von VorabInformation found :"#found);}
} else {
if(debug) {WriteLine("else von VORABINFORMATION found :"#found);}
!------------------------------------------------------------------------------------------------------------
! Auswertung
!------------------------------------------------------------------------------------------------------------
integer time = system.Date("%F %X").ToTime().ToInteger();
var diff1 = time - start.ToInteger();
var diff2 = time - end.ToInteger();
if(debug) {WriteLine("diff1 :"#diff2);}
if(debug) {WriteLine("diff2 :"#diff2);}
if(diff1 >= 0 && diff2 <= 0) {
dom.GetObject(wwAktiv).State(true);
if(debug) {WriteLine("Wetterwarnung auf true");}
}
else {
dom.GetObject(wwAktiv).State(false);
if(debug) {WriteLine("Wetterwarnung auf false");}
}
stdout = start.ToInteger().ToTime().ToString() # " - " # end.ToInteger().ToTime().ToString() # ": " # event ;
if(debug) {WriteLine("WetterwarnungText :"#stdout);}
if(debug) {WriteLine("WetterwarnungTyp :"#(mtyp.ToInteger()+1).ToString());}
if(debug) {WriteLine("WetterwarnungDescript :"#descript);}
dom.GetObject(wwText).State(stdout);
dom.GetObject(wwTyp).State(mtyp.ToInteger()+1);
dom.GetObject(wwDescription).State(descript);
}
}
!------------------------------------------------------------------------------------------------------------
! Allgemeiner Fallback
!------------------------------------------------------------------------------------------------------------
if(!found) {
if(debug) {WriteLine("Fallback Keine Warnung gefunden - found :"#found);}
dom.GetObject(wwAktiv).State(false);
dom.GetObject(wwText).State("Keine Warnungen");
dom.GetObject(wwTyp).State(0);
dom.GetObject(wwCity).State("---");
dom.GetObject(wwRegionName).State("---");
dom.GetObject(wwStart).State("---");
dom.GetObject(wwEnd).State("---");
dom.GetObject(wwStartDateTime).State("---");
dom.GetObject(wwEndDateTime).State("---");
dom.GetObject(wwLevel).State(0);
dom.GetObject(wwState).State("---");
dom.GetObject(wwDescription).State("---");
dom.GetObject(wwEvent).State("---");
dom.GetObject(wwHeadline).State("---");
dom.GetObject(wwInstruction).State("---");
dom.GetObject(wwStateShort).State("---");
dom.GetObject(wwAltitudeStart).State("---");
dom.GetObject(wwAltitudeEnd).State("---");
}
Zuletzt geändert von Tharanis am 04.02.2018, 22:29, insgesamt 1-mal geändert.
DWD-Unwetterwarnscript v1.32.b03 (RaspberryMatic) - Lüftungswarnung auf Temperatur-Basis
RaspberryMatic (3.65.11.20221005) - Längste Laufzeit bislang: 48 Tage (RaspberryMatic), 72 Tage (CCU2), >100 Tage (CCU1)
RaspberryMatic (3.65.11.20221005) - Längste Laufzeit bislang: 48 Tage (RaspberryMatic), 72 Tage (CCU2), >100 Tage (CCU1)
-
- Beiträge: 4
- Registriert: 29.10.2017, 10:11
Re: Unwetterwarnung Script
@Tharanis: Ich habe es gerade mal ausprobiert. Es scheint wieder alles zu funktionieren. Vielen Dank
-
- Beiträge: 24
- Registriert: 01.11.2017, 11:20
Re: Unwetterwarnung Script
Hallo zusammen,
das mit den Unwetterwarnungen hört sich sehr interessant an. Nur leider komme ich mit der Beschreibung nicht klar.
kann mir jemand sozusagen für DAUs erklären was ich machen muß?
Ich scheitere schon an der Beschreibung mit dem Einmalscript für die Systemvariablen.
Für Hilfe wäre ich sehr dankbar
Gruß Quellenfeuer
das mit den Unwetterwarnungen hört sich sehr interessant an. Nur leider komme ich mit der Beschreibung nicht klar.
kann mir jemand sozusagen für DAUs erklären was ich machen muß?
Ich scheitere schon an der Beschreibung mit dem Einmalscript für die Systemvariablen.
Für Hilfe wäre ich sehr dankbar
Gruß Quellenfeuer
Re: Unwetterwarnung Script
Vielen Dank für das Script. Ich erhalte beim Scripttesten mit Degug=true nur:
Ist das richtig so???? Denke eigentlich, dass eine Unwetterwarnung besteht.
Viele Grüße
Markus
Code: Alles auswählen
cmd : LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --range 0-25000 https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
ret cmd_sets : false
ret cmd_query_ret: false
stdout cmd_rets :
Fallback Keine Warnung gefunden - found :false
Viele Grüße
Markus
Zuletzt geändert von alchy am 03.02.2018, 21:27, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
-
- Beiträge: 24
- Registriert: 01.11.2017, 11:20
Re: Unwetterwarnung Script
Hallo zusammen,
ich habe es mittlerweile hinbekommen, jetzt würde ich gerne mir noch die Meldungen
per Pushover schicken lassen, da komme ich aber leider nicht weiter, kann mir da jemand helfen oder
hat es vielleicht bei sich schon laufen und kann mir den script dafür posten?
Gruß Quellenfeuer
ich habe es mittlerweile hinbekommen, jetzt würde ich gerne mir noch die Meldungen
per Pushover schicken lassen, da komme ich aber leider nicht weiter, kann mir da jemand helfen oder
hat es vielleicht bei sich schon laufen und kann mir den script dafür posten?
Gruß Quellenfeuer
-
- Beiträge: 1464
- Registriert: 27.06.2010, 01:01
- Wohnort: Braunschweig
- Hat sich bedankt: 4 Mal
Re: Unwetterwarnung Script
HalloTharanis,
vielen Dank für die Überarbeitung. Hat nach Anlegen der zwei neuen Systemvariablen auch bei mir auf Anhieb funktioniert.
Gruß, Tobias.
vielen Dank für die Überarbeitung. Hat nach Anlegen der zwei neuen Systemvariablen auch bei mir auf Anhieb funktioniert.
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------
-
- Beiträge: 164
- Registriert: 03.06.2016, 21:55
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 51 Mal
- Danksagung erhalten: 8 Mal
Re: Unwetterwarnung Script
Hallo,quellenfeuer hat geschrieben: ich habe es mittlerweile hinbekommen, jetzt würde ich gerne mir noch die Meldungen
per Pushover schicken lassen, da komme ich aber leider nicht weiter, kann mir da jemand helfen oder
hat es vielleicht bei sich schon laufen und kann mir den script dafür posten?
ich nutze dazu momentan dieses Skript:
Code: Alles auswählen
! versenden der SV "Pushnachricht.Text" mittels Pushover über CUxD.exec & curl
object t = dom.GetObject("<deine Variable mit dem Text>");
object s = dom.GetObject("<deine Variable mit dem Titel>");
integer prio = dom.GetObject("E-Mail.Versand").Value(); WriteLine("Sys_prio:\t"#prio);
string token = "kein Token";
string title = s.Value().ToString();
string message = t.Value().ToString();
!string message = "Pushover-Test\nSonderzeichen: <font color='red'>A_b_C_ä*ö*ü*?*ß</font>";string title="Title";t.State("abc");
message = message.Replace("[","<").Replace("]",">").Replace("%","%25").ToUTF8(); !.UriEncode();
title = title.Replace("[","<").Replace("]",">").Replace("%","%25").ToUTF8(); !.UriEncode();
string userkey = "<dein Userkey>";
if (prio == 1) {token = "<dein Token1>";} ! Token für die App "HomeMatic Fehler"
if (prio == 2) {token = "<dein Token2>"; prio = 0;} ! Token für die App "HomeMatic Info"
if (prio == 3) {token = "<dein Token3>"; prio = 0;} ! Token für die App "HomeMatic System"
if( (message != "") && (title != "") && (token != "kein Token") ){
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/cuxd/extra/curl -s -k -d token='"#token#"' -d user='"#userkey#"' -d message='"#message#"' -d title='"#title#"' -d html=1 -d priority='"#prio#"' -d retry=3 http://api.pushover.net/1/messages.json");
! -F "attachment=@image.jpg"
WriteLine("\nVERSAND\n");
}
else{WriteLine("\nABBRUCH\n");}
Das Skript hab ich mir aus Schnipseln von Alchys und dtps Werken zusammengeschustert ... vielleicht nicht elegant, aber es läuft soweit Vielen Dank bei dieser Gelegenheit an die beiden!
Grüße, Ecky
Grüße,
Ecky
Ecky
Re: Unwetterwarnung Script
Hallo zusammen,
funktioniert das Script von klana mittlerweile auf der CCU?
Beste Grüße
Kai
funktioniert das Script von klana mittlerweile auf der CCU?
Beste Grüße
Kai
-
- Beiträge: 393
- Registriert: 25.01.2017, 10:51
- Wohnort: Bei Berlin
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 8 Mal
Re: Unwetterwarnung Script
Ich habe es aufgegeben. Ich habe alle Varianten durch, habe die php-Datei auf meinem Webserver gelegt etc.
Ich nutze nun den DWD Adapter auf dem ioBroker. Der funktioniert einwandfrei, gibt alle Warnungen per Push aus und informiert auch beim Aufheben der Wetterwarnung.
Martin
Ich nutze nun den DWD Adapter auf dem ioBroker. Der funktioniert einwandfrei, gibt alle Warnungen per Push aus und informiert auch beim Aufheben der Wetterwarnung.
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200