RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Kaffeejunkie
Beiträge: 38
Registriert: 28.10.2017, 13:48
Wohnort: Berlin
Hat sich bedankt: 1 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von Kaffeejunkie » 31.12.2018, 14:51

Wortmann30 hat geschrieben:
31.12.2018, 13:53
Hi

habe heute update durchgeführt alles gut verlaufen bisher nur eine kleine Auffälligkeit die aber nicht die Funktion beeinträchtigt.

Wenn man unter "Status und Bedienung" > "Geräte" Aufruft werden diese so angezeigt:
Unbenannt.JPG

Betätig man dann das Gerät wird geschaltet aber die Darstellung wechselt zu dem:
Unbenannt1.JPG

Läd man das gerät neu rein ist alles wieder wie vorher.

Wie gesagt bedienen lässt such alles.
Vorkommen tut das bei allen Geräten die Steuerbar sind.
Hatte ich auch. Dann habe ich einfach nur den Cache des Browsers gelöscht und alles war gut.

SGubler
Beiträge: 74
Registriert: 24.09.2018, 17:49
Hat sich bedankt: 3 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von SGubler » 31.12.2018, 15:44

Ja, sowas kenne ich auch in Chrome.
Mit dem Edge oder dem Iridium Browser geht das schnell.
Auch die SSH Einstellung hängt beim Chrome machnmal.

dixy
Beiträge: 28
Registriert: 17.04.2013, 20:50
Wohnort: HH
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Erledigt: nur erste mp3 Datei wird einmalig abgespielt mit Funk-Gong-Modul MP3 mit microSD-Karten-Slot HM-OU-CM-PCB

Beitrag von dixy » 31.12.2018, 16:35

IST ERLEDIGT, es schaut so aus als wenn die Spannungsversorgung des MP3 Moduls durch den zugeschalteten Verstärker und dem längeren Versorgungsspannungskabel neuerdings zu stark einbricht. Werde da jetzt mal stabilisierend eingreifen.


Hallo Leute, hallo Jens-Maus,

seit 2 Jahren betreibe ich das Funk-Gong-Modul MP3 mit microSD-Karten-Slot HM-OU-CM-PCB im Keller mit nachgeschaltetem Verstärker als Einbrecherschreck. Nacheinander werden bei erkannten Bewegungen im Garten die auf der micro-SD abgespeicherten mp3 Hundegebell Sounds abgespielt. Nun ist mir aufgefallen, dass nur noch eine mp3 Datei abgespielt wird. An der Konfiguration habe ich nichts geändert, alle mp3 sind im Root als 001_xxx.mp3 bis 150_xxx.mp3 auf der Karte abgespeichert. Funktionierte immer tadellos.

unter Kanalaktionen habe ich folgende Werte eingestellt: 0.9,20,180,80,85,83,77,86
d.h. 90% Lautstärke, 20 Wiederholungen, 3min(180sek.) Laufzeit, mp3 Stücke 80,85,83,77,86 sollen abgespielt werden.
Die micro-SD Karte weist keinen Fehler auf.

Die neue RaspberryMatic vom 22.12.2018 ist auf dem Pi.
Kann jemand dieses Verhalten bestätigen? Oder hat sich bei der Befehlsübergabe der Stücke etwas geändert?
Ich hatte jetzt mal testweise auf 0.9,20,180,080,085,083,077,086 abgeändert, das hat aber auch nichts gebracht.
Wenn ich nur ein mp3 file eintrage, wird es einmalig abgespielt. Das ist doch auch nicht korrekt, oder?

Ob es erst ab dieser Version aufgetreten ist, vermag ich nicht zu sagen.

Gruß
dixy
Zuletzt geändert von dixy am 06.01.2019, 23:58, insgesamt 2-mal geändert.
RaspberryMatic auf PI3 und neuer Senderplatine RPI-RF-MOD und angeschlossener Philips Hue Bridge

Benutzeravatar
Wortmann30
Beiträge: 1353
Registriert: 21.03.2014, 21:39
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 11 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von Wortmann30 » 31.12.2018, 17:18

Kaffeejunkie hat geschrieben:
31.12.2018, 14:51
Wortmann30 hat geschrieben:
31.12.2018, 13:53
Wenn man unter "Status und Bedienung" > "Geräte" Aufruft werden diese so angezeigt:
Unbenannt.JPG

Betätig man dann das Gerät wird geschaltet aber die Darstellung wechselt zu dem:
Unbenannt1.JPG

Hatte ich auch. Dann habe ich einfach nur den Cache des Browsers gelöscht und alles war gut.
Den Browser Cache zu löschen bring bei mir nix... aber es stört mich jetzt nicht weiter.
Grüsse


To be continued...

Benutzeravatar
Eli_78
Beiträge: 160
Registriert: 09.09.2017, 13:09
Hat sich bedankt: 18 Mal
Danksagung erhalten: 20 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von Eli_78 » 01.01.2019, 15:06

Hallo Zusammen

Habe bei meiner Raspmatic ebenfalls ein merkwürdiges Verhalten festgestellt.

Ich kann nicht genau sagen ob es mit dem letzten Update auf die 3.41.11.20181222 oder mit dem anlernen meines ersten HMIP Aktors (HMIP-PSM) zusammenhängt, da ich beides fast zeitgleich gemacht habe.

Jedenfalls startet kein Programm mehr wenn meine Internetverbindung durch, zum Beispiel Windows Updates ausgelastet ist.
Dazu muss ich noch erwähnen das ich sehr ländlich wohne und mein Internet recht langsam ist (379 kbit/s down und 244 kbit/s up).
Sobald die Verbindung wieder frei ist, werden die Programme dann nach einiger Zeit alle ausgeführt, in der Reihenfolge in der sie ausgelöst wurden.
Das ganze lässt sich beliebig reproduzieren.

Habe zu Testzwecken schon den HMIP Aktor abgelernt, hat aber nichts gebracht.
Auch ein neustart der Fritz Box und der Raspmatic zeigte keine Wirkung.


Grüße Thomas
Intel NUC (NUC6CAYH) 8GB Ram, 60GB SSD + RPI-RF-MOD auf HB-RF-USB-2 + APC USV via Nut Server (Master)
IOBroker auf RPI3B+
1262 Kanäle in 323 Geräten und 127 CUxD-Kanäle in 16 CUxD-Geräten
Und der ganze Haufen funktioniert auch noch! :D

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von NickHM » 01.01.2019, 16:05

Eli_78 hat geschrieben:
01.01.2019, 15:06

Jedenfalls startet kein Programm mehr wenn meine Internetverbindung durch, zum Beispiel Windows Updates ausgelastet ist.
Hallo

die Programme laufen lokal auf der zentrale, nicht auf ioBroker oder so?
Schicken Programme Mails oder andere Daten ins Internet?
Werden Internetseiten abgefragt, wie z.B. Wetterseiten?

Das könnte die Zentrale blockieren, denn es werden alle Vorgänge immer nacheinander ausgeführt.
Eine Zentrale an sich funktioniert auch ohne Internet oder Netzwerkverbindung.
Also muss die auch gehen, wenn das Netzwerkkabel abgezogen ist.

Du kannst ja mal testen, ob das Problem auch auf tritt, wenn keine Netzwerkverbindung da ist, unabhängig vom Internet.
Wenn der DSL Router eine Fritzbox ist, kann man unter "Filter" den Internetzugriff einschränken indem "nur lokales Netz" oder "gesperrt" frü die Zentrale eingetragen wird.

Benutzeravatar
Eli_78
Beiträge: 160
Registriert: 09.09.2017, 13:09
Hat sich bedankt: 18 Mal
Danksagung erhalten: 20 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von Eli_78 » 01.01.2019, 17:01

Hallo NickHM

Die Programme laufen Lokal auf der Raspmatic.
Ich konnte, dank deines Tips das Problem eingrenzen.
Das Wetterwarn Script von Grrzzz / klana(Vers. 1.122) löst den Stillstand aus.

Was komisch ist, dieses Script läuft nun schon seit ca 1,5 Jahren und machte bis Dato nie Probleme.
Deswegen auch meine Vermutung das es mit dem letzten Update zu tun hat.

Ansonsten wurde an der Raspmatic und den FritzBox Einstellungen nichts verändert.

Edit: Wenn die Internetverbindung komplett getrennt wird, hängt sich die Raspmatic auch auf.
Das war vor dem Update definitiv anders. Wir hatten vom 21.12.2018 bis zum 24.12.2018 drei Tage kein Internet, da die Telekom bei der Umstellung auf DSL Annex J, einen Fehler gemacht hat. Damals lief die Raspmatic die drei Tage ohne Internet problemlos durch.

Grüße Thomas
Intel NUC (NUC6CAYH) 8GB Ram, 60GB SSD + RPI-RF-MOD auf HB-RF-USB-2 + APC USV via Nut Server (Master)
IOBroker auf RPI3B+
1262 Kanäle in 323 Geräten und 127 CUxD-Kanäle in 16 CUxD-Geräten
Und der ganze Haufen funktioniert auch noch! :D

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von NickHM » 01.01.2019, 19:21

Hallo

dachte ich mir. Dann ist das Script nicht kompatibel mit der neuen Version

- Programm erst mal deaktivieren und sehen, ob der RasPi dann durch läuft.
- parallel dazu das komplette Script hier rein kopieren. Vielleicht kann jemand drauf schauen, warum der Abruf der Webseite nicht mehr geht.

kann ja auch sein, dass der Abruf der Internetseite nicht mehr geht, weil der I-net Anschluß umgestellt wurde.

Du hast also 2 Dinge verändert, FW und SL Anschluss.
Du könntest auf die alte FW zurück und testen. Dann würde das die Veränderung des DSL Anschluss ausschließen.

Benutzeravatar
Eli_78
Beiträge: 160
Registriert: 09.09.2017, 13:09
Hat sich bedankt: 18 Mal
Danksagung erhalten: 20 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von Eli_78 » 01.01.2019, 19:35

Servus

Hier erst mal das Script:

Code: Alles auswählen

! ------  DWD Unwetterwarnung 07.08.2018  Vers. 1.122 -----------------------------------------------------------
! Unwetterwarnungsscript von Grrzzz / klana
! Version 1.122 vom 07.08.2018
! Korrekturen & Optimierungen von kafetzke
! - Korrekturen von Level und Typ
! - Umbau Auswertung des JSONs auf "solidere" Abfrage
! - Optimierung und Korrektur Fallback
!
! 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
! Für Berlin z.B. 111000000
! --------------------------------------------------------------
 string city = "108337000";   ! Kreis Waldshut-Tiengen
! 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
!------------------------------------------------------------------------------------------------------------

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("---");
}
Das Script an sich läuft wenn die Internetverbindung besteht.
Alle Variablen werden korrekt gesetzt und alles läuft normal durch.
Nur eben nicht wenn die Verbindung ins Internet aus irgendwelchen Gründen ausgebremst oder abgebrochen wird.

Grüße Thomas
Intel NUC (NUC6CAYH) 8GB Ram, 60GB SSD + RPI-RF-MOD auf HB-RF-USB-2 + APC USV via Nut Server (Master)
IOBroker auf RPI3B+
1262 Kanäle in 323 Geräten und 127 CUxD-Kanäle in 16 CUxD-Geräten
Und der ganze Haufen funktioniert auch noch! :D

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: RaspberryMatic 3.41.11.20181222 – Erfahrungsberichte

Beitrag von NickHM » 01.01.2019, 22:08

Eli_78 hat geschrieben:
01.01.2019, 19:35

Das Script an sich läuft wenn die Internetverbindung besteht.
Alle Variablen werden korrekt gesetzt und alles läuft normal durch.
Nur eben nicht wenn die Verbindung ins Internet aus irgendwelchen Gründen ausgebremst oder abgebrochen wird.

Grüße Thomas
Hallo

da kann dann wohl nur Jens etwas dazu sagen.

Du sagtest ja, 3 Tage ohne Internet mit einer älteren RasPiMatic Version gab es keine Probleme. Also wurde da nicht auf das Ende des Scriptes gewartet oder es gab eine funktionierende Abbruchbedingung.

Gesperrt

Zurück zu „RaspberryMatic“