Wie gibst Du denn aus dem DWD-Adapter die Warnung per Push aus? (Sorry, ist eigentlich OT, aber dafür wollte ich kein neues Fass aufmachen)MartinBr hat geschrieben:...Ich nutze nun den DWD Adapter auf dem ioBroker. Der funktioniert einwandfrei, gibt alle Warnungen per Push aus...
Unwetterwarnung Script
Moderator: Co-Administratoren
- papi
- Beiträge: 371
- Registriert: 18.12.2013, 08:40
- Wohnort: Willich, NRW
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
-
- Beiträge: 119
- Registriert: 15.04.2015, 11:39
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
@Karlinho: in viewtopic.php?f=31&t=38161&start=60#p389819 schreibt jmaus schon etwas zu diesem Thema und bestätigt, dass es mit der von der CCU2 verwendeten OpenSSL-Version keinen Zugriff auf den DWD-Server gibt.
Ich habe das eben nochmal mit meiner eigentlich ausgedienten CCU2 nochmal getestet und mit SSH die folgende mit jmaus geposteten identische Fehlermeldung bekommen:
Also funktioniert Klanas Script leider weiter nur mit der Raspberrymatic. Das Script von Grrzzz ist das Script der Wahl auf der CCU2.
Ich habe das eben nochmal mit meiner eigentlich ausgedienten CCU2 nochmal getestet und mit SSH die folgende mit jmaus geposteten identische Fehlermeldung bekommen:
Code: Alles auswählen
# wget https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
--2018-02-06 23:18:13-- https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
Resolving www.dwd.de... 141.38.3.62
Connecting to www.dwd.de|141.38.3.62|:443... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.
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: 393
- Registriert: 25.01.2017, 10:51
- Wohnort: Bei Berlin
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 8 Mal
Re: Unwetterwarnung Script
Im ioBroker gibt es wie in der Homematic alle möglichen Adapter, z.B. Pushover, Telegram und Mail. Einfach einrichten und als Push integrieren.Beitragvon papi » 06.02.2018, 19:58
MartinBr hat geschrieben:
...Ich nutze nun den DWD Adapter auf dem ioBroker. Der funktioniert einwandfrei, gibt alle Warnungen per Push aus...
Wie gibst Du denn aus dem DWD-Adapter die Warnung per Push aus? (Sorry, ist eigentlich OT, aber dafür wollte ich kein neues Fass aufmachen)
Gruß
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
-
- Beiträge: 1
- Registriert: 18.01.2018, 11:46
Re: Unwetterwarnung Script
Hallo zusammen!Tharanis hat geschrieben: Also funktioniert Klanas Script leider weiter nur mit der Raspberrymatic. Das Script von Grrzzz ist das Script der Wahl auf der CCU2.
Hat jemand das Script von Grrzzz mit dem Umweg des PHP Skripts schon zum Laufen gebracht?
Ich habe das PHP Skript nun schon auf zwei PHP-fähigen "Servern" laufen (QNAP und Raspberry), die Einträge in Grrzzz's Skript entsprechend angepsst (String URL) - jedoch kommen keine Werte rein.
Wenn ich die Adresse des PHP-Skripts im Browser aufrufe, sehe ich jedoch alle notwendigen Daten.
Danke und Grüße aus NDS!
P.S.: Sehr gutes Forum, was ich schon eine Weile durchstöbere, mich jedoch erst jetzt angemeldet habe. *Daumen hoch*
CCU2, IOBroker, Alexa, Lightify
Re: Unwetterwarnung Script
Egal was ich mache. Ich bekomme auf meiner CCu2 immer die selbe Fehlermeldung beim Script testen beim Grrrr Script:
LG 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
Zuletzt geändert von alchy am 07.02.2018, 21:29, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
-
- Beiträge: 34
- Registriert: 30.07.2018, 13:47
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
Moin zusammen,
ich war mal so frei, das DWD-Script für die Verwendung auf der CCU2 zu korrigieren und auch ein wenig zu optimieren.
Es werden nun alle Datenfelder korrekt ausgelesen und die Reihenfolge der Datenfelder ist irrelevant.
Gruß,
Kafetzke
PS.: Ich hoffe, das geht als "Einstandskuchen" un diesem Forum durch
ich war mal so frei, das DWD-Script für die Verwendung auf der CCU2 zu korrigieren und auch ein wenig zu optimieren.
Es werden nun alle Datenfelder korrekt ausgelesen und die Reihenfolge der Datenfelder ist irrelevant.
Gruß,
Kafetzke
PS.: Ich hoffe, das geht als "Einstandskuchen" un diesem Forum durch
Code: Alles auswählen
! ------ DWD Unwetterwarnung 30.07.2018 Vers. 1.1 -----------------------------------------------------------
! Unwetterwarnungsscript von Grrzzz / klana
! Version 1.1 vom 30.07.2018
! Korrekturen von kafetzke
! - Korrekturen von Level und Typ
! - Umbau Auswertung des JSONs auf "solidere" Abfrage
!
! 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 = true;
! 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 = "103254000"; ! Kreis Hildesheim
! 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();
}
!--------- Originalwert -----
var stdout_orgn = stdout;
!--------- Originalwert -----
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());
!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)
var stdout_type = stdout_orgn.Substr(stdout_orgn.Find("type")+6);
var mtyp = stdout_type.Substr(0, stdout_type.Find(","));
if(debug) {WriteLine("mtyp :"#mtyp);}
if(mtyp) {dom.GetObject(wwTyp).State(mtyp);}
! state (Bundesland im Klartext z.B: Nordrhein-Westfalen)
var stdout_state = stdout_orgn.Substr(stdout_orgn.Find("state")+8);
var state = stdout_state.Substr(0, stdout_state.Find(",")-1);
if(debug) {WriteLine("state :"#state);}
if(state) {dom.GetObject(wwState).State(state);}
!Level - Vermutung 0 = Vorabwarnung, 1..10 tatsächliche Warnungen
var stdout_lvl = stdout_orgn.Substr(stdout_orgn.Find("level")+7);
var level = stdout_lvl.Substr(0, stdout_lvl.Find(","));
if(debug) {WriteLine("level :"#level);}
if(level) {dom.GetObject(wwLevel).State(level);}
! headline (Überschrift der Meldung z.B. Amtliche WARNUNG vor WINDBÖEN)
var stdout_head = stdout_orgn.Substr(stdout_orgn.Find("headline")+11);
var headline = stdout_head.Substr(0, stdout_head.Find(",")-1);
if(debug) {WriteLine("headline :"#headline);}
if(headline) {dom.GetObject(wwHeadline).State(headline);}
! description (nähere Erklärung der Meldung im Klartext)
var stdout_desc = stdout_orgn.Substr(stdout_orgn.Find("description")+14);
var descript = stdout_desc.Substr(0, stdout_desc.Find(",")-1);
if(debug) {WriteLine("descript :"#descript);}
if(descript) {dom.GetObject(wwDescription).State(descript);}
! altitude Start
var stdout_start = stdout_orgn.Substr(stdout_orgn.Find("altitudeStart")+15);
var altitudeStart = stdout_start.Substr(0, stdout_start.Find(","));
if(debug) {WriteLine("altitudeStart :"#altitudeStart);}
if(altitudeStart) {dom.GetObject(wwAltitudeStart).State(altitudeStart);}
! event (Kurzform der Meldungsart z.B. Winböen)
var stdout_event = stdout_orgn.Substr(stdout_orgn.Find("event")+8);
var event = stdout_event.Substr(0, stdout_event.Find("}")-1);
if(debug) {WriteLine("event :"#event);}
if(event) {dom.GetObject(wwEvent).State(event);}
! instruction
var stdout_instr = stdout_orgn.Substr(stdout_orgn.Find("instruction")+14);
var instruction = stdout_instr.Substr(0, stdout_instr.Find(".\",")+1);
if(debug) {WriteLine("instr :"#instruction);}
if(instruction) {dom.GetObject(wwInstruction).State(instruction);}
! altitude End
var stdout_end = stdout_orgn.Substr(stdout_orgn.Find("altitudeEnd")+13);
var altitudeEnd = stdout_end.Substr(0, stdout_end.Find(","));
if(debug) {WriteLine("altitudeEnd :"#altitudeEnd);}
if(altitudeEnd) {dom.GetObject(wwAltitudeEnd).State(altitudeEnd);}
! stateShort (Abkürzung Bundesland z.B: NRW)
var stdout_stt_short = stdout_orgn.Substr(stdout_orgn.Find("stateShort")+13);
var stateShort = stdout_stt_short.Substr(0, stdout_stt_short.Find(",")-1);
if(debug) {WriteLine("stateShort :"#stateShort);}
if(stateShort) {dom.GetObject(wwStateShort).State(stateShort);}
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("---");
}
Unwetter-Meldungen vom DWD: https://github.com/kafetzke/homatic-script-dwd
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps
- klana
- Beiträge: 1099
- Registriert: 08.02.2015, 08:37
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 27 Mal
Re: Unwetterwarnung Script
Hi Kafetzke,
Ich hab das mal installiert. Gestern kam korrekt die Wetterwarnung HITZE.
Heute ist wieder eine Wetterwarnung Hitze gekommen, aber leider erkennt das Programm das nicht und setzt die Wetterwarnung auf Inaktiv.
Hier mal ein Ausschnitt aus den Debugausgaben (plus ein paar eigene) :
Obwohl die Systemzeit, sowie die Start und Endzeit der Warnmeldung unterschiedlich sind, kommt bei der Variable diff1/diff2 immer das Gleiche raus.
Deshalb wird der Status nicht auf AKtiv gesetzt.
Vielleicht findest Du den Fehler....
Gruß
Klana
Ich hab das mal installiert. Gestern kam korrekt die Wetterwarnung HITZE.
Heute ist wieder eine Wetterwarnung Hitze gekommen, aber leider erkennt das Programm das nicht und setzt die Wetterwarnung auf Inaktiv.
Hier mal ein Ausschnitt aus den Debugausgaben (plus ein paar eigene) :
Code: Alles auswählen
else von VORABINFORMATION found :true
time :1533024585
start :1533027600
end :1533056400
diff1 :-31815
diff2 :-31815
Wetterwarnung auf false
WetterwarnungText :2018-07-31 11:00:00 - 2018-07-31 19:00:00: HITZE
WetterwarnungTyp :9
WetterwarnungDescript :Am Dienstag wird eine starke Wärmebelastung erwartet.\n\n
Deshalb wird der Status nicht auf AKtiv gesetzt.
Code: Alles auswählen
!------------------------------------------------------------------------------------------------------------
! Auswertung
!------------------------------------------------------------------------------------------------------------
integer time = system.Date("%F %X").ToTime().ToInteger();
var diff1 = time - start.ToInteger();
var diff2 = time - end.ToInteger();
if(debug) {WriteLine("time :"#time);}
if(debug) {WriteLine("start :"#start.ToInteger());}
if(debug) {WriteLine("end :"#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");}
}
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: 34
- Registriert: 30.07.2018, 13:47
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
Moin Klana,
ich musste gerade ein wenig grinsen Vermutlich, weil mir das beim Entwickeln ständig selbst passiert ist
...deswegen (und nur deswegen) sehen bei dir diff1 und diff2 gleich aus. Sie sind es gar nicht
Ich habe gerade mal ohne Script-Änderungen meine Variablen überprüft - alles gut. Als kleinen Test habe ich zusätzlich mal per Tinymatic-App die Systemvariable Wetterwarnung_Aktiv auf false gesetzt und das Script erneut ausgeführt -> sie springt ordnungsgemäß wieder auf true. Daran scheint's nicht zu liegen...
edit:
Kleine Ergänzung:
Zumindest für Hildesheim ist er nachts ebenfalls nicht umgesprungen auf "Aktiv = false", weil die aktuelle Meldung von gestern bis heute Abend gilt. Könnte das bei dir auch der Fall sein?
ich musste gerade ein wenig grinsen Vermutlich, weil mir das beim Entwickeln ständig selbst passiert ist
Code: Alles auswählen
if(debug) {WriteLine("diff1 :"#diff2);}
if(debug) {WriteLine("diff2 :"#diff2);}
Ich habe gerade mal ohne Script-Änderungen meine Variablen überprüft - alles gut. Als kleinen Test habe ich zusätzlich mal per Tinymatic-App die Systemvariable Wetterwarnung_Aktiv auf false gesetzt und das Script erneut ausgeführt -> sie springt ordnungsgemäß wieder auf true. Daran scheint's nicht zu liegen...
edit:
Kleine Ergänzung:
Zumindest für Hildesheim ist er nachts ebenfalls nicht umgesprungen auf "Aktiv = false", weil die aktuelle Meldung von gestern bis heute Abend gilt. Könnte das bei dir auch der Fall sein?
Unwetter-Meldungen vom DWD: https://github.com/kafetzke/homatic-script-dwd
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps
- klana
- Beiträge: 1099
- Registriert: 08.02.2015, 08:37
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 27 Mal
Re: Unwetterwarnung Script
Arrrggg!!! So ein schei...!
Das ist der typische Copy/Paste Effekt - als Programmierer ist man da manchmal betriebsblind
Die Wetterwarnung ist gestern Abend auf inaktiv gesprungen und heute morgen habe ich von der Warnwetterapp (iOS) ein Meldung bekommen von 11-19 Uhr Hitze, nur von der Homematic kam nix. Deswegen habe ich auch nachgeschaut.
Um 11:00 Uhr kam dann auch die Meldung von der HM.
Also gehe ich davon aus, das der Parameter ShowVorabInfo=true wohl keine Wirkung hat und die Meldung immer nur zur eigentlichen Start-/Endezeit gesetzt wird.
Aber soweit funktioniert es auch hier auf meinem Raspi 3B+
Super Arbeit!!
Gruß
Klana
PS: Einen hab ich noch....
In den Strings sind /n drin, das sieht bei einer Ausgabe per Homamatic PocketControl doof aus.
z.B im String Text: Am Dienstag wird eine starke Wärmebelastung erwartet.\n\n
Das ist der typische Copy/Paste Effekt - als Programmierer ist man da manchmal betriebsblind
Die Wetterwarnung ist gestern Abend auf inaktiv gesprungen und heute morgen habe ich von der Warnwetterapp (iOS) ein Meldung bekommen von 11-19 Uhr Hitze, nur von der Homematic kam nix. Deswegen habe ich auch nachgeschaut.
Um 11:00 Uhr kam dann auch die Meldung von der HM.
Also gehe ich davon aus, das der Parameter ShowVorabInfo=true wohl keine Wirkung hat und die Meldung immer nur zur eigentlichen Start-/Endezeit gesetzt wird.
Aber soweit funktioniert es auch hier auf meinem Raspi 3B+
Super Arbeit!!
Gruß
Klana
PS: Einen hab ich noch....
In den Strings sind /n drin, das sieht bei einer Ausgabe per Homamatic PocketControl doof aus.
z.B im String Text: Am Dienstag wird eine starke Wärmebelastung erwartet.\n\n
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: 34
- Registriert: 30.07.2018, 13:47
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 5 Mal
Re: Unwetterwarnung Script
Immer gerne
Jaaaa die \n nerven mich auch, ich kenne keine replace() Funktion für den String. Hast du nen Tipp?
Jaaaa die \n nerven mich auch, ich kenne keine replace() Funktion für den String. Hast du nen Tipp?
Unwetter-Meldungen vom DWD: https://github.com/kafetzke/homatic-script-dwd
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps
GoogleMaps API-Anbindung: https://github.com/kafetzke/homatic-script-googleMaps