Kalender-Script V2.x - MEGA-Version für D-A-CH

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

Moderator: Co-Administratoren

Benutzeravatar
FBK2904
Beiträge: 454
Registriert: 22.03.2016, 17:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Bei Ludwigsburg
Hat sich bedankt: 80 Mal
Danksagung erhalten: 42 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von FBK2904 » 03.06.2021, 15:58

Shuo hat geschrieben:
03.06.2021, 13:39
Wie kann ich kurz aufeinanderfolgende Tage als nicht zusammenhängend definieren? Also Beispiel:
07.06 bis 11.06 würde ich eintragen als:

Code: Alles auswählen

07.06;11.06
FALSCH, Termine "von xx bis xx" werden mit einem Komma "," eingtragen.

Shuo hat geschrieben:
03.06.2021, 13:39
... wenn ich den 07.06 und 11.06 Urlaub eintragen will. Also 08.,09. und 10. wäre kein Urlaubstag.

Code: Alles auswählen

07.06;11.06
RICHTIG, die einzelnen Termine werden durch das Semikolon ";" getrennt.

Außerdem fehlen in deinen beiden Beispielen überall nach dem Monat der Punkt "." :roll: !

So steht es in der Beschreibung unter "Urlaub" auch drin
Mischbeispiel (01.06. - 05.06. sowie am 07.06. und 11.06.):

Code: Alles auswählen

01.06.,05.06.;07.06.;11.06.
Grüssle,
Frank
--------------------------
System: CCU3 (RM 3.75.6.20240316) mit Stabantenne (www.stall.biz)
Geräte: 56x HM (classic) / 13x HmIP / 8x CUxD /16x virtuelle Gruppen / 4x PioTek-Tracker V4 FTTB & FAM-USB-Gateway
Addons: XML-API 2.3 / CUx-Daemon 2.11 / CUxD-Highcharts 1.45 / Programme drucken 2.6
Sonstige: SDV v5.03.04 G / AIO Creator NEO v3.1.0 mit 2x Samsung Tab SM-T580 (Root & Android 10 [LineageOS 17.1 by TALUAtXDAi])

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von Shuo » 03.06.2021, 18:24

Hi Frank. Danke für die Erklärung. Das mit dem Komma und dem Semikolon hab ich irgendwie übersehen....

Funktioniert einwandfrei...

mangodjango
Beiträge: 1
Registriert: 30.09.2021, 10:06
System: CCU

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von mangodjango » 30.09.2021, 10:33

Hallo, nach Stundenlangen ausprobieren muss ich mich leider geschlagen geben, mein Anliegen:
ich habe mit "SYS-XTag-Termine" alle Geburtstagstermine eingegeben und lese mir diese entsprechend aus mit:
"IST-XTag-Nächster-Datum"
"IST-XTag-Nächster-Name"

Dies habe ich im Aio Creator meiner Visualisierung hinzugefügt und nun sehe ich immer den nächster Geburtstag mit Name und Datum auf meiner Fernbedienung.

Jetzt kommt mein Problem ich würde gerne auf meiner Fernbedienung eine Seite erstellen wo alle Geburtstage von der Liste "SYS-XTag-Termine" aufgeführt sind auflisten lassen. Eine Art Tabelle

In "SYS-XTag-Termine" sind die Termine so aufgelistet : 01.02.=Test1;01.03.=Test2;01.04.=Test3 usw.....

Mann kann sich diese Termine immer nur einzeln Anzeigen lassen für gestern, heute, morgen, nächstes Datum ich hätte Gerne eine Variable wo alle aufgelistet sind.
ich hätte gerne diese Termine als Tabelle folgt Dargestellt:

01.02.20xx / Test1 (neue Zeile)
01.03.20xx / Test2 (neue Zeile)
01.04.20xx / Test3 (neue Zeile)

hat Jemand eine Idee das Kalenderscript um diese Funktion zu erweitern oder ein neues Script Anlegen wo diese Tabelle erzeugt.

Meine Programmierkenntnisse haben leider nicht gereicht und ich würde das gerne Umsetzten, wobei das für eine Kalenderscript ein gute Ergänzung wäre : für alle Funktionen von Feiertage,Urlaub,Ferien,Geburtstag das man sich diese auch komplett Anzeigen lassen kann als Übersicht.

liebe Grüße
Mangodjango und hoffentlich kann mir jemand weiterhelfen.....

Benutzeravatar
Faust
Beiträge: 32
Registriert: 21.06.2020, 18:10
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 14 Mal
Danksagung erhalten: 3 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von Faust » 01.11.2021, 13:58

Hallo,

heute ist in manchen Bundesländern Allerheiligen Feiertag. Ich verwende Script Version 2.1.0. Die Variable IST-Feiertag-Heute ist als Logikwert wahr= ja, falsch=nein angelegt. Die Variable Sys-Landeskennung steht auf D-BY-1. Dennoch wird IST-Feiertag-Heute nicht auf ja eingestellt. Die beiden Programme Feiertagsscript und Feiertagsscript_Konfiguration sind laut Anleitung angelegt und arbeiten korrekt. Dennoch wird den Feiertag nicht gesetzt. Andere Werte wie z.B. nächster Feiertag 25.12.2021 werden richtig ausgewertet.

Ich habe auch schon von Logikwert auf Werteliste umgestellt, kein Erfolg. Wo könnte ich nach dem Fehler suchen? Hat jemand sowas schon mal gehabt?

Danke & MFG Faust
414 Kanäle in 64 Geräten und 370 CUxD-Kanäle in 24 CUxD-Geräten:
2x HM-TC-IT-WM-W-EU, 3x HmIP-HAP, 1x HmIP-MIOB, 12x HmIP-WTH-2, 12x HmIP-HEATING, 15x HmIP-SRH, 4x HmIP-eTRV-2, 21x CUX40, 2x HmIP-STE2-PCB, 1x HmIP-SWSD, 4x HmIP-eTRV-B, 1x HmIP-SWDM, 1x HmIP-FALMOT-C12, 1x HmIP-FROLL, 1x HmIP-RCV-50, 2x HmIP-STHO, 3x CUX28, 1x HmIP-CCU3

maxxiger
Beiträge: 84
Registriert: 12.05.2016, 11:16
Hat sich bedankt: 21 Mal
Danksagung erhalten: 3 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von maxxiger » 14.11.2021, 20:03

Hallo Zusammen,

im Bereich "Urlaub" gibt es ja die Möglichkeit den nächstgelegenen Termin (= nächsten Urlaub) als Datum/Zeitspanne auszugeben, was auch einwandfrei funktioniert.

Gäbe es eine Möglichkeit auch das Datum /Zeitspanne des übernächsten Urlaubs auszugeben?

Hintergrund: ich nutzte dieses Skript zur Darstellung der Belegung meiner Ferienwohnung. In diesem Fall wäre eine Anzeige der übernächsten Belegung/Buchung/"Urlaub" sehr sinnvoll.

Hat da jemand eine Idee?

Vielen Dank!

TSNr1
Beiträge: 89
Registriert: 22.12.2015, 19:53
Hat sich bedankt: 5 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von TSNr1 » 29.12.2022, 00:03

BadenPower hat geschrieben:MEGA-Version
zunächst einmal vielen, vielen Dank für das tolle Skript. Ich nutze es sehr gerne und es läuft absolut reibungslos auf meiner CCU3 mit Raspberrymatic.

Da du ja sowieso schon das Bundesland für die Feiertage abfragst, wäre es da nicht auch möglich noch eine Einbindung der Ferienkalender automatisch in die Variable einzutragen?

Auf http://ferien-api.de/ werden die Daten zur Verfügung gestellt. Sogar mit den Unterkategorien der Bundesländer.

Hast du da eine einfache Lösung für um es im passenden Format in die SysVar zu schreiben?

MichaelN
Beiträge: 9635
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von MichaelN » 29.12.2022, 00:15

JSON kannst du einfach mit dem Skript aus meiner Signatur in eine Systemvariable schreiben. Zugegeben, das ist nur die halbe Miete.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

TSNr1
Beiträge: 89
Registriert: 22.12.2015, 19:53
Hat sich bedankt: 5 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von TSNr1 » 29.12.2022, 01:33

Hallo Michael,

Danke erstmal für das Skript.

Ich klinke mich hier mal ein aufgrund deiner Nachricht zum Kalenderskript. Hoffe das ist okay.

Könntest du mir da kurz helfen mit der umkodierung der Daten?

Ich bekomme schonmal die richtigen Daten raus die ich mir vorstelle.
Aber das Datum ist natürlich nach ISO kodiert. Also mit JJJJ-MM-TT,
Umgeschrieben auf Punkte hab ich es schon.
Aber den Tausch auf TT.MM.JJJJ krieg ich nicht hin. Ist das in deinem Skript direkt möglich? Oder brauche ich dafür nochmal ein weiteres Skript?

Und ist es ebenfalls möglich die Daten von start und Ende dann direkt in start,datum (TT.MM.JJJJ,TT.MM.JJJJ) umzustellen statt in zwei getrennten SysVar's?

Mein Output sieht jetzt so aus. Es geht um die Daten von JSON_[1,...]_start und _end

Code: Alles auswählen

=== Output V1.11 ===
JSON_start = '2023.01.30'
JSON_end = '2023.01.31'
JSON_year = '2023'
JSON_stateCode = 'NI'
JSON_name = 'winterferien niedersachsen 2023'
JSON_slug = 'winterferien niedersachsen 2023.2023.NI'
JSON_1_start = '2023.03.27'
JSON_1_end = '2023.04.11'
JSON_1_year = '2023'
JSON_1_stateCode = 'NI'
JSON_1_name = 'osterferien niedersachsen 2023'
JSON_1_slug = 'osterferien niedersachsen 2023.2023.NI'
JSON_2_start = '2023.05.19'
JSON_2_end = '2023.05.19'
JSON_2_year = '2023'
JSON_2_stateCode = 'NI'
JSON_2_name = 'pfingstferien niedersachsen 2023 (beweglicher ferientag)'
JSON_2_slug = 'pfingstferien niedersachsen 2023 (beweglicher ferientag).2023.NI'
JSON_3_start = '2023.07.06'
JSON_3_end = '2023.08.16'
JSON_3_year = '2023'
JSON_3_stateCode = 'NI'
JSON_3_name = 'sommerferien niedersachsen 2023'
JSON_3_slug = 'sommerferien niedersachsen 2023.2023.NI'
JSON_4_start = '2023.10.02'
JSON_4_end = '2023.10.02'
JSON_4_year = '2023'
JSON_4_stateCode = 'NI'
JSON_4_name = 'herbstferien niedersachsen 2023 (beweglicher ferientag)'
JSON_4_slug = 'herbstferien niedersachsen 2023 (beweglicher ferientag).2023.NI'
JSON_5_start = '2023.10.16'
JSON_5_end = '2023.10.27'
JSON_5_year = '2023'
JSON_5_stateCode = 'NI'
JSON_5_name = 'herbstferien niedersachsen 2023'
JSON_5_slug = 'herbstferien niedersachsen 2023.2023.NI'
JSON_6_start = '2023.12.27'
JSON_6_end = '2024.01.05'
JSON_6_year = '2023'
JSON_6_stateCode = 'NI'
JSON_6_name = 'weihnachtsferien niedersachsen 2023'
JSON_6_slug = 'weihnachtsferien niedersachsen 2023.2023.NI'
Danke dir schonmal im voraus vielmals.
Zuletzt geändert von alchy am 29.12.2022, 18:58, insgesamt 1-mal geändert.
Grund: abgetrennt, verschoben, Titel geändert

Benutzeravatar
Henke
Beiträge: 1520
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 140 Mal
Danksagung erhalten: 306 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von Henke » 29.12.2022, 01:46

Code: Alles auswählen

string sDate = '2023.03.27';
               !0123456789
string sNew = sDate.Substr(8,2) # "." # sDate.Substr(5,2) # "." # sDate.Substr(0,4);
WriteLine (  sNew ); 
Zuletzt geändert von alchy am 29.12.2022, 18:58, insgesamt 1-mal geändert.
Grund: abgetrennt, verschoben, Titel geändert

TSNr1
Beiträge: 89
Registriert: 22.12.2015, 19:53
Hat sich bedankt: 5 Mal

Re: Kalender-Script V2.x - MEGA-Version für D-A-CH

Beitrag von TSNr1 » 29.12.2022, 03:53

Henke hat geschrieben:
29.12.2022, 01:46

Code: Alles auswählen

string sDate = '2023.03.27';
               !0123456789
string sNew = sDate.Substr(8,2) # "." # sDate.Substr(5,2) # "." # sDate.Substr(0,4);
WriteLine (  sNew ); 
Danke dir. Steh nur gerade tierisch aufm Schlauch, an welcher Stelle ich deinen Schnipsel einfügen muss.
Hier der Quellcode:

Code: Alles auswählen

!JSON universell auslesen
!V1.11 MichaelN https://homematic-forum.de/forum/viewtopic.php?f=18&t=68762
!GPL-3.0-or-later
string url = "https://ferien-api.de/api/v1/holidays/NI/2023.json";
url = "wget --no-check-certificate --timeout=2 -O - '"#url#"'";
string prefix = "JSON_";
string CUXD_Device = ""; ! falls man CUxD  nutzt, Device eintragen z.B. "CUxD.CUX2801001:1"
! optional kann man Texte am Anfang und Ende abschneiden
string Start_JSON ='['; ! 'Hier den Start des eigentlichen JSON-Codes eingeben'
string Ende_JSON =']'; ! 'Hier den Ende des eigentlichen JSON-Codes eingeben'
! Trenner kann notfalls angepasst werden, wenn es mit den Nutzdaten kollidiert
string TrennerArray = " \ ";  TrennerArray = TrennerArray.Trim();
string TrennerArrayErsatz = "/";
! festlegen welche Zeichen in den Nutzdaten durch welches Zeichen ersetzt werden
string ersetzen = ":,[]{}";
string durch = " ";

string rueck;
string error;
object SV;
string SVName;
var Wert;

!- Abruf der Daten
if ( !CUXD_Device ) {
! system.exec
system.Exec(url , &rueck, &error);
} else {
! CUxD
dom.GetObject(CUXD_Device#".CMD_SETS").State(url);
dom.GetObject(CUXD_Device#".CMD_QUERY_RET").State(1);
rueck = dom.GetObject(CUXD_Device#".CMD_RETS").State();
}



if (!rueck== "")
{
   WriteLine("=== HTTP-Request OK === "#rueck);
   if ( Start_JSON.Length() > 0 ) {
       ! JSON am Anfang kürzen
	   rueck = rueck.Substr(rueck.Find(Start_JSON));
   }
   if ( Ende_JSON.Length() > 0 ) {
       ! JSON am Ende kürzen
	   rueck = rueck.Substr(0,rueck.Find(Ende_JSON));
   }
   rueck = rueck.ToLatin(); ! wegen deutschen Umlauten
   rueck = rueck.Trim(" {}[]");
   rueck = rueck.Replace('\n','');
   rueck = rueck.Replace('\r','');
   rueck = rueck.Replace('_','-');
   rueck = rueck.Replace('-','.');
   rueck = rueck.Replace(TrennerArray,TrennerArrayErsatz);
   if (rueck.Substr(0,1) == "[" ) { rueck = "data:"#rueck; }
   WriteLine("=== nach Replace === '"#rueck#"'");


! Array und Payload aufbereiten
   integer pos1 = 0; integer posG = 0;
   integer pos2 = rueck.Length();
   string temp = ""; string temp2;
   string teil; 
   boolean Array = false; boolean Payload = false;
   while ( pos1 < pos2 )
	 {
         teil = rueck.Substr(pos1,1);
         if ( teil == "[")
            {! Array gefunden
            Array = true;
            }
         if ( (teil == "," ) && Array )
           {! Komma gegen Schraegstrich tauschen
            teil = TrennerArray;
            }
         if ( teil == "]")
            {! Array Ende
            Array = false;
            }
         if (  teil == '"' ) {
            if ( Payload )
            {! Payload Ende
            Payload = false;
            } else {
            ! Payload Start
            Payload = true;
            }
            }
         if ( ( ersetzen.Contains(teil) )  && Payload )
           {! verbotene Zeichen austauschen
            teil = durch;
            }
         temp = temp#teil;
         pos1 = pos1 + 1;
		 }
   rueck = temp;
   rueck = rueck.Replace('"','');
   WriteLine("=== nach Aufbereitung === '"#rueck#"'");
   WriteLine("=== Output V1.11 ===");

   string Part; string SVNameArray;
   string Gruppe = ""; string GruppeNeu;
   integer G1; integer G2;
   integer ArrayZaehler = 0;
   boolean ArrayMitGruppe = false;

   foreach (Part, rueck.Split(",") ){
          if (Part.Contains(":"))
          {
           if (Part.Contains("{"))
           { ! Unter-Objekt gefunden
             !WriteLine("Z96 Part='"#Part#"'"); ! *** DEBUG

             if (Part.Contains("[")) {
               ! enthält Arrray
               GruppeNeu = Part.StrValueByIndex(":", 0);
               GruppeNeu = GruppeNeu.Trim() #"_";
               Part = Part.Substr(GruppeNeu.Length()+2).Trim("{ ");
               Gruppe = Gruppe # GruppeNeu; Gruppe = Gruppe.Replace("__","_");
               !WriteLine("Gruppe alt:"#Gruppe); ! DEBUG ***
               !WriteLine("Inhalt alt:"#Part); ! DEBUG ***
             } else {
               ! enthält kein Array, aber möglicherweise geschachtelte Objekte
               temp = Part.Replace("{",";");
               G2 = web.webGetValueListCount(temp);
               G1=0;
               while (G1 < (G2-1)) {
               GruppeNeu = web.webGetValueFromList(temp,(G1)).Trim(" :");
               if ( (GruppeNeu == "_") || (GruppeNeu == "") ) {
               	    ArrayZaehler = ArrayZaehler + 1;
                    GruppeNeu = ArrayZaehler.ToString(0).Trim() # "_";
                    }
               Gruppe = Gruppe # GruppeNeu # "_";
               G1 = G1 + 1;
               }
               if ( Gruppe == "_" ) {
               	    ArrayZaehler = ArrayZaehler + 1;
                    Gruppe = ArrayZaehler.ToString(0).Trim() # "_";
                    }
               Gruppe = Gruppe.Replace("__","_");
               Part = web.webGetValueFromList(temp,(G2-1));
               !WriteLine("Gruppe neu:"#Gruppe); ! *** DEBUG
               !WriteLine("Inhalt neu:"#Part); ! **** DEBUG
             }

             !WriteLine("=== GRUPPE-START: "#Gruppe);
           }
           if (Part.Contains(TrennerArray)) {
              ! Array gefunden
              !WriteLine("=== ARRAY auflösen:"#Part);
              ArrayMitGruppe = false;
              Part = Part.Replace("[","");
              Part = Part.Replace("]","");
              pos1 = 0;  posG = 0;
              SVName = Gruppe;
              if (Part.Contains(":"))
                  {
                  SVName = Part.StrValueByIndex(":", 0);
                  Part = Part.Substr(SVName.Length()+1).Trim();
                  SVName = SVName.Trim("[{ ");
		  !WriteLine("*** Z365 ARRAY aufgelöst in:"#SVName#"==="#Part#"===");  ! DEBUG ***
                  }
              foreach (temp,Part.Split(TrennerArray))
              	{
                !WriteLine("Z352 temp="#temp); ! DEBUG ***

                if ( temp.Contains(":")) {
                ! Array enthält eine Gruppe

                  SVName = temp.StrValueByIndex(":", 0).Trim("{ ");
                  temp2 = temp;
                  temp = temp.StrValueByIndex(":", 1).Trim(" []");
                  SVNameArray = SVName#posG.ToString(0).Trim();
                      if ( temp.Contains("{")) {
                      ! weitere Gruppe gefunden
                      ArrayMitGruppe = true;
                      Gruppe = Gruppe # SVName # "_";
                      temp = temp.Trim(" {"); ! temp.StrValueByIndex("{", 1).Trim();
                      SVName = temp;
                      temp = temp2.StrValueByIndex(":", 2).Trim(" []");
                      SVNameArray = SVName#posG.ToString(0).Trim();
                      !WriteLine("Z363 Gruppe="#Gruppe#" SVNameAray="#SVNameArray#" temp="#temp); ! DEBUG ***
                      }

                  if ( temp.Contains("}")) { posG = posG + 1; }
                  !WriteLine("Z367 Gruppe="#Gruppe#" SVNameAray="#SVNameArray#" temp="#temp); ! DEBUG ***
                  WriteLine (prefix # Gruppe # SVNameArray #" = '"# temp.Trim(" {[]}") #"'");
	              SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get((prefix # Gruppe # SVNameArray));
     	          if (SV) {
                   SV.State(temp.Trim(" {[]}"));
                   WriteLine("=== SV "#prefix # Gruppe # SVNameArray #" written ===");
                   }
                } else {
                ! keine Gruppe
                  SVNameArray = SVName#pos1.ToString(0).Trim();
                  WriteLine (prefix # Gruppe # SVNameArray #" = '"# temp.Trim(" {[]}") #"'");
	              SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get((prefix # Gruppe # SVNameArray));
     	          if (SV) {
                   SV.State(temp.Trim(" {[]}"));
                   WriteLine("=== SV "#prefix # Gruppe # SVNameArray #" written ===");
                   }
                  pos1 = pos1 + 1;
                  }
           		if ( (temp.Contains("}")) && (ArrayMitGruppe)  )
           		{ ! Unter-Objekt zu Ende
               		  ! Gruppe um letzten Eintrag kürzen
               		  temp2 = Gruppe.Replace("_",";");
               		  G2 = web.webGetValueListCount(temp2);
                      !WriteLine("Z365 GRUPPE: "#Gruppe#" ==="); ! DEBUG ***
               		  Gruppe = ""; G1=0;
               				while (G1 < (G2-2)) {
               				Gruppe = Gruppe # web.webGetValueFromList(temp2,(G1)) # "_";
                			!WriteLine("Z368 "#G1#"/"#G2#":"#Gruppe); ! *** DEBUG
               				G1 = G1 + 1;
               				}
             		!WriteLine("=== Z374 GRUPPE-ENDE: "#Gruppe#" ===");
                    ArrayMitGruppe = false;
           		}


                }
                if ( posG > 0 ) {
                	!WriteLine("Z413 Part="#Part); ! *** DEBUG

              		! Gruppe um letzten Eintrag kürzen
               		temp2 = Gruppe.Replace("_",";");
               		G2 = web.webGetValueListCount(temp2);
                    !WriteLine("=== GRUPPE-ENDE (array): "#Gruppe#"***");
               		Gruppe = ""; G1=0;
               		while (G1 < (G2-2)) {
               				Gruppe = Gruppe # web.webGetValueFromList(temp2,(G1)) # "_";
                			!WriteLine("Z422 "#G1#"/"#G2#":"#Gruppe); ! *** DEBUG
               				G1 = G1 + 1;
               				}

                        }
			! ARRAY ENDE


           } else {
           ! ohne Array
           ! WriteLine("Z154 Part='"#Part#"'"); ! *** DEBUG
           Part = Part.Replace(":",";");
           SVName = Gruppe#web.webGetValueFromList(Part,0).Trim();
           Wert = web.webGetValueFromList(Part,1).RTrim("}").Trim(" {[]}");
           WriteLine (prefix # SVName #" = '"# Wert #"'");
	       SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get((prefix # SVName));
     	   if (SV) {
                   SV.State(Wert);
                   WriteLine("=== SV "#prefix # SVName #" written ===");
                   }
           if (Part.Contains("}"))
             { ! Unter-Objekt zu Ende
             ! *** Gruppe muss um so viele Einträge gekürzt werden, wie } vorhanden sind in Part ***
             Part = Part.Replace(" ","");
             ! WriteLine("Z199 Part='"#Part#"'"); ! *** DEBUG
             while ( Part.EndsWith("}") ) {
               ! Gruppe um letzten Eintrag kürzen
               temp = Gruppe.Replace("_",";");
               G2 = web.webGetValueListCount(temp);
               Gruppe = ""; G1=0;
               while (G1 < (G2-2)) {
               		Gruppe = Gruppe # web.webGetValueFromList(temp,(G1)) # "_";
               		! WriteLine("=== "#G1#":"#Gruppe); *** DEBUG
               		G1 = G1 + 1;
               		}
               Part = Part.Substr(0,(Part.Length()-1)) ;
               ! WriteLine("Z212 Part="#Part); ! *** DEBUG
             } ! Ende while
             !WriteLine("=== GRUPPE-ENDE: "#Gruppe#" ===");
            }
           }
         }
   }
} else {
  WriteLine("Error at HTTP Request");
}
Zuletzt geändert von alchy am 29.12.2022, 18:59, insgesamt 2-mal geändert.
Grund: abgetrennt, verschoben, Titel geändert

Antworten

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