Unwetterwarnung Script

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

Moderator: Co-Administratoren

Stramon
Beiträge: 46
Registriert: 29.06.2016, 20:28
Wohnort: Kiel
Hat sich bedankt: 3 Mal

Re: Unwetterwarnung Script

Beitrag von Stramon » 10.08.2018, 15:07

Da kommt:

cmd : LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --range 0-25000 https://www.dwd.de/DWD/warnungen/warnap ... nings.json
Suche nach City :901058002
stdout nach Find(City): 901058002":[{"regionName":"Kreis Rendsburg-Eckernförde - Küste","start":1533902400000,"end":1533924000000,"type":1,"state":"Schleswig-Holstein","level":2,"stateShort":"SH","description":"Es treten Windböen mit Geschwindigkeiten bis 60 km/h (17m/s, 33kn, Bft 7) aus südwestlicher Richtung auf. In Schauernähe sowie in exponierten Lagen muss mit Sturmböen bis 70 km/h (20m/s, 38kn, Bft 8) gerechnet werden.","altitudeStart":null,"altitudeEnd":null,"headline":"Amtliche WARNUNG vor WINDBÖEN","instruction":"","event":"WINDBÖEN"}]
regionName: Kreis Rendsburg-Eckernförde - Küste
Start stdout : 1533902400000,"end":1533924000000,"type":1,"state":"Schleswig-Holstein","level":2,"stateShort":"SH","description":"Es treten Windböen mit Geschwindigkeiten bis 60 km/h (17m/s, 33kn, Bft 7) aus südwestlicher Richtung auf. In Schauernähe sowie in exponierten Lagen muss mit Sturmböen bis 70 km/h (20m/s, 38kn, Bft 8) gerechnet werden.","altitudeStart":null,"altitudeEnd":null,"headline":"Amtliche WARNUNG vor WINDBÖEN","instruction":"","event":"WINDBÖEN"}]
start : 1533902400
end : 1533924000
End stdout : 1533924000000,"type":1,"state":"Schleswig-Holstein","level":2,"stateShort":"SH","description":"Es treten Windböen mit Geschwindigkeiten bis 60 km/h (17m/s, 33kn, Bft 7) aus südwestlicher Richtung auf. In Schauernähe sowie in exponierten Lagen muss mit Sturmböen bis 70 km/h (20m/s, 38kn, Bft 8) gerechnet werden.","altitudeStart":null,"altitudeEnd":null,"headline":"Amtliche WARNUNG vor WINDBÖEN","instruction":"","event":"WINDBÖEN"}]
Start DateTime: 2018-08-10 14:00:00
End DateTime: 2018-08-10 20:00:00

Aber das landet nicht in meinen Variablen.
Muss ich die Variablen neu anlegen oder gehen die vom alten Skript? Könnte es daran liegen?

kafetzke
Beiträge: 34
Registriert: 30.07.2018, 13:47
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Unwetterwarnung Script

Beitrag von kafetzke » 10.08.2018, 15:16

ja, da die Ausgabe quasi perfekt ist hinsichtlich des Ergebnisses, liegt es recht wahrscheinlich an den Variablen.

Im Script selbst sind ja die korrekten Variablen aufgelistet:

Code: Alles auswählen

! 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
Ansonsten ist noch eine zweite potentielle Fehlerquelle die CUxD-Variable: achte bitte darauf, dass diese zu der im Script passt (sonst im Script korrigieren!)

Code: Alles auswählen

string execdevice = "CUxD.CUX2801001:1";
Gruß Kafetzke

PS.: bei dem Standort kann man ja nur neidisch werden 8) :roll:

Stramon
Beiträge: 46
Registriert: 29.06.2016, 20:28
Wohnort: Kiel
Hat sich bedankt: 3 Mal

Re: Unwetterwarnung Script

Beitrag von Stramon » 10.08.2018, 15:42

Es waren tatsächlich die Variablen! :lol:
Nun läuft es wie es soll.
Vielen Dank für eure Arbeit!
kafetzke hat geschrieben:
10.08.2018, 15:16
PS.: bei dem Standort kann man ja nur neidisch werden 8) :roll:
Naja 18° und Schauer, heute bleibe ich lieber drinnen. :wink:

Gruß Jens

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Unwetterwarnung Script

Beitrag von nicolas-eric » 02.10.2018, 09:02

Danke für den Tip mit dem HTTPS. :mrgreen:
Und ich wunderte mich schon, warum da Script bei mir schon ewig nicht funktioniert.

kafetzke
Beiträge: 34
Registriert: 30.07.2018, 13:47
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Unwetterwarnung Script

Beitrag von kafetzke » 02.10.2018, 13:26

8)

mfahs
Beiträge: 280
Registriert: 18.01.2011, 00:06

Re: Unwetterwarnung Script

Beitrag von mfahs » 04.10.2018, 00:19

Hallo zusammen!

Ich habe seit langer Zeit das erste DWD-Script problemlos am Start und habe mir jetzt ber mal Eure neuere Version angesehen - vor allem die Hinweise des DWD fand ich interessant :-), die werden in der HTML-Version nicht mitgeliefert.
Ich hätte aber zwei Anmerkungen zu der aktuellen Version Eures Scriptes:

1.) Liste der Regionen beim DWD bestimmern
Bei dem in Eurem Script angegebenen Link zum Heraussuchen der Region-ID wird die eigene Region ja nur dann aufgelistet, wenn tatsächlich eine Warnung für die Region vorliegt. In der Textdatei, die unter http://www.dwd.de/DE/leistungen/gds/hel ... onFile&v=4 zum Download bereit steht, sind alle Regionen-ID's aufgelistet.

2.) Description mit einem "," im Text
Ich habe mich gewundert, dass der Text unter "Description" bei mir so verkrüppelt war. Das lag daran, dass der Text ein Komma enthielt. Nun wird in Eurem Script ja die Zeichenkette von

Code: Alles auswählen

"description":"
bis zum nächsten Komma herausgefiltert, was eigentlich bis zum Ende des JSON-Pairs gehen sollte. Da aber bereits ein Komma im Text gefunden wird, wird der restliche Text abgesäbelt. Ich habe die Zeile 290 in dem Script etwas "überarbeitet":

Code: Alles auswählen

var descript = stdout_desc.Substr(0, stdout_desc.Find('",')-1);
Nun wird der komplette Beschreibungstext übernommen, weil bis zum nächsten > ", < (also "Anführungszeichen gefolgt von einem Komma") gesucht wird.

Ich dachte, dass das vielleicht von Interesse sein könnte...

Grüße,
Martin

kafetzke
Beiträge: 34
Registriert: 30.07.2018, 13:47
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Unwetterwarnung Script

Beitrag von kafetzke » 04.10.2018, 09:53

Hallo Martin,

vielen Dank für deine Anmerkungen.
Ich deine Vorschläge mal eingebaut. Ich habe allerdings den Verdacht, dass die IDs auf Gemeindeebene nicht in der JSON-Datei vom DWD enthalten sind.

Code: Alles auswählen

! ------  DWD Unwetterwarnung 04.10.2018  Vers. 1.13 -----------------------------------------------------------
! Unwetterwarnungsscript von Grrzzz / klana / kafetzke
! Version 1.13 vom 04.10.2018
!
! 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 = true;

! --------------------------------------------------------------
! 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

! Die Region-ID kann auf Gemeindeebene aus dieser Liste gezogen werden
! http://www.dwd.de/DE/leistungen/gds/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=4

! Für Berlin z.B. 111000000
! --------------------------------------------------------------
! string city = "103254000";   ! Kreis Hildesheim
 string city = "803254029";   ! Gemeinde Schellerten
! 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);}
	  if(!regionName) {dom.GetObject(wwRegionName).State("---");}
      
      
      ! 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);}
	  if(!start) {dom.GetObject(wwStart).State(0);}

  
      
      ! 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(!end) {dom.GetObject(wwEnd).State(0);}
      
      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);}
	  if(!mtyp) {dom.GetObject(wwTyp).State();}
      	  
	! 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);
	  ! Überflüssige Zeilenumbrüche wegoptimieren, sofern vorhanden
	  descript = descript.UriEncode();
	  descript = descript.Replace("%5Cn", " ");
	  descript = descript.UriDecode();
	  
	  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 :"#diff1);}
        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);
      }
	  
	  !! Interner Fallback, falls Felder leer sind
		if(!state) {dom.GetObject(wwState).State("---");}
		if(!level) {dom.GetObject(wwLevel).State(0);}
		if(!headline) {dom.GetObject(wwHeadline).State("---");}
		if(!descript) {dom.GetObject(wwDescription).State(" ");}
		if(!altitudeStart) {dom.GetObject(wwAltitudeStart).State("---");}
		if(!event) {dom.GetObject(wwEvent).State(" ");}
		if(!instruction) { dom.GetObject(wwInstruction).State(" ")};
		if(!altitudeEnd) {dom.GetObject(wwAltitudeEnd).State("---");}
		if(!stateShort) {dom.GetObject(wwStateShort).State("---");}
}

!------------------------------------------------------------------------------------------------------------
! Allgemeiner Fallback
! Ausgebaut am 02.08.2018 und auf die einzelnen Felder verteilt
!------------------------------------------------------------------------------------------------------------





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(wwStateShort).State("---");
    dom.GetObject(wwAltitudeStart).State("---");
    dom.GetObject(wwAltitudeEnd).State("---");
	dom.GetObject(wwInstruction).State(" ");
}
Gruß,
Michael

Sweatchuck
Beiträge: 125
Registriert: 07.09.2016, 08:44
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Unwetterwarnung Script

Beitrag von Sweatchuck » 17.10.2018, 10:58

Hallo,

läuft das Skript mit der CCU3?

Danke + Gruß
Sweatchuck

kafetzke
Beiträge: 34
Registriert: 30.07.2018, 13:47
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Unwetterwarnung Script

Beitrag von kafetzke » 17.10.2018, 19:12

Moin,

entwickelt wurde das Ganze auf der Raspimatic - für die CCU3 habe ich leider keinerlei Erfahrungswerte :-(

Da hilft nur ausprobieren...

Gruß,
Kafetzke

Nemex
Beiträge: 9
Registriert: 11.01.2018, 09:45
Hat sich bedankt: 3 Mal

Re: Unwetterwarnung Script

Beitrag von Nemex » 22.10.2018, 19:38

Also das Script funktioniert auf der CCU3 perfekt.

Kann ich mir das Datum der Meldung auch in anderer Reihenfolge anzeigen lassen?
Aktuell ist es ja 2018-10-22

Danke und Gruß

Antworten

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