Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von AndiN » 10.06.2017, 08:36

Hallo,

ich habe jetzt das Unwetter Skript 2.67 habe ich jetzt auch auf die tmp-Variante geändert.

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Chris482
Beiträge: 17
Registriert: 03.03.2017, 21:34

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Chris482 » 29.06.2017, 09:44

AndiN hat geschrieben:Unwetter Skript von blackhole (http://homematic-forum.de/forum/viewtop ... 31&t=27234)

Code: Alles auswählen

!------------------------------------------------------------------------------------------------------------
! Wetterwarnung DWD v2.67
! zusammengestellt von blackhole, es wurden viele Code-Schnippsel von
! diversen Forenmitgliedern der Community 'homematic-forum.de' verwendet
!------------------------------------------------------------------------------------------------------------

!------------------------------------------------------------------------------------------------------------
! Voreinstellungen hier vornehmen:(CUxD-Device, Systemvariablen, Region)
!------------------------------------------------------------------------------------------------------------

!Genaue Bezeichnung der Region aus DWD-Karte "Warnungen - aktuell" entnehmen
!Siehe: http://www.dwd.de/DE/wetter/warnungen/warnWetter_node.html

string tmpA = "Rhein Sieg Kreis";

!Virtuelles CUxD-Exec-Device hier angeben

string tmpB = "CUxD.CUX2801001:1";

!Nötige CCU-Systemvariablen
!In der CCU anzulegende Systemvariablen stehen nachfolgend in Anführungszeichen

string tmpC = "SV_Wetterwarnung_Anzahl"; !Zahl
string tmpD = "SV_Wetterwarnung_Kurztext"; !Zeichenkette
string tmpE = "SV_Wetterwarnung_von"; !Zeichenkette
string tmpF = "SV_Wetterwarnung_bis"; !Zeichenkette
string tmpG = "SV_Wetterwarnung_Langtext"; !Zeichenkette
string tmpH = "SV_Wetterwarnung_Schlagwort"; !Zeichenkette
string tmpI = "SV_Wetterwarnung_Art"; !Zeichenkette

!------------------------------------------------------------------------------------------------------------
! Filter ein-/ausschalten und Filterliste für Wetterwarnungen definieren
!------------------------------------------------------------------------------------------------------------

!Gültige Werte sind "ein" und "aus" (Default: aus)
string tmpJ = "aus";

!Gültige Werte sind frei definierbare Suchausdrücke (Default: oberhalb)
!Ein Suchausdruck darf aus mehreren Wörtern, Wortteilen und/oder Zahlen bestehen
!Die Suchausdrücke der Filterliste werden durch Tabs "/t" voneinander getrennt
!Eine Filterliste, die z.B. Warnungen in einzelnen Höhenlagen ausfiltert:
!Beispiel: "oberhalb 400 m/toberhalb 600 m/toberhalb 800 m/toberhalb 1000 m"
!Eine beispielhafte Filterliste, die Warnungen in allen Höhenlagen austmpJt:
string tmpK = "oberhalb";

!------------------------------------------------------------------------------------------------------------
! Debug-Modus (Ausgabe nur im Bereich "Skript testen" der CCU)
!------------------------------------------------------------------------------------------------------------

!Gültige Werte sind "ein" und "aus" (Default: aus)
string tmpL = "aus";

!------------------------------------------------------------------------------------------------------------
! Ab hier muss man nichts mehr beachten
!------------------------------------------------------------------------------------------------------------

!------------------------------------------------------------------------------------------------------------
! Sonderzeichen in "Region" HTML-codieren
!------------------------------------------------------------------------------------------------------------

string tmpM;
string tmpN;

foreach(tmpN,tmpA.Split("ä")) {
   tmpM = tmpM # tmpN # "&a" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("ö")) {
   tmpM = tmpM # tmpN # "&o" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("ü")) {
   tmpM = tmpM # tmpN # "&u" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("Ä")) {
   tmpM = tmpM # tmpN # "&A" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("Ö")) {
   tmpM = tmpM # tmpN # "&O" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("Ü")) {
   tmpM = tmpM # tmpN # "&U" # "uml;"; }
tmpA = tmpM;
tmpM = "";
foreach(tmpN,tmpA.Split("ß")) {
   tmpM = tmpM # tmpN # "&sz" # "lig;"; }
tmpA = tmpM;
tmpM = "";
tmpA = tmpA.Substr(0, tmpA.Length()-43);

!------------------------------------------------------------------------------------------------------------
! DWD-Warntabelle in 25k(+25k)-Abschnitten laden bis die Region gefunden wurde
!------------------------------------------------------------------------------------------------------------

string tmpO = "http://www.dwd.de/DWD/warnungen/warnapp/json/warnings.html";
string tmpP = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
integer tmpQ = 1;
integer tmpR = 25000;
integer tmpS = 1;
string tmpT = tmpP # " --range " # tmpQ # "-" # tmpR # " " # tmpO;
string tmpU = tmpA;
string tmpV = "  /tr  /table";

dom.GetObject(tmpB # ".CMD_SETS").State(tmpT);
dom.GetObject(tmpB # ".CMD_QUERY_RET").State(1);
string tmpW = dom.GetObject(tmpB # ".CMD_RETS").State();
integer tmpX = tmpW.Find("Letzte Aktualisierung");
integer tmpY = tmpW.Find(tmpU);

if ((tmpY >= 0) && (tmpW.Length() >= 25000)) {
   tmpQ = tmpR - 99;
   tmpR = tmpR + 24900;
   tmpT = tmpP # " --range " # tmpQ # "-" # tmpR # " " # tmpO;
   dom.GetObject(tmpB # ".CMD_SETS").State(tmpT);
   dom.GetObject(tmpB # ".CMD_QUERY_RET").State(1);
   tmpW = tmpW + dom.GetObject(tmpB # ".CMD_RETS").State();
}

while ((tmpY < 0) && (tmpW.Length() >= 25000) && (tmpS <= 30)) {
   tmpS = tmpS + 1;
   tmpQ = tmpR - 99;
   tmpR = tmpR + 24900;
   tmpT = tmpP # " --range " # tmpQ # "-" # tmpR # " " # tmpO;
   dom.GetObject(tmpB # ".CMD_SETS").State(tmpT);
   dom.GetObject(tmpB # ".CMD_QUERY_RET").State(1);
   tmpW = dom.GetObject(tmpB # ".CMD_RETS").State();
   tmpY = tmpW.Find(tmpU);
   if ((tmpY >= 0) && (tmpW.Length() >= 25000)) {
      tmpQ = tmpQ + 25000;
      tmpR = tmpR + 25000;
      tmpT = tmpP # " --range " # tmpQ # "-" # tmpR # " " # tmpO;
      dom.GetObject(tmpB # ".CMD_SETS").State(tmpT);
      dom.GetObject(tmpB # ".CMD_QUERY_RET").State(1);
      tmpW = tmpW + dom.GetObject(tmpB # ".CMD_RETS").State();
   }
}
if (tmpL == "ein") {
   WriteLine("Anzahl Downloads: " # tmpS);
}

!------------------------------------------------------------------------------------------------------------
! Relevanter Bereich ausschneiden und zuweisen
!------------------------------------------------------------------------------------------------------------

tmpW = tmpW.Substr(tmpY, 5000);
integer tmpZ = tmpW.Find(tmpU);
integer tmpA1 = tmpW.Find(tmpV);
integer tmpB1 = 0;

if (tmpY >= 0) {
   tmpB1 = 1;
}

if(tmpB1 > 0){

   tmpW = tmpW.Substr(tmpZ, tmpA1 - tmpZ);

   !---------------------------------------------------------------------------------------------------------
   ! HTML-codierte Sonderzeichen in Text umwandeln
   !---------------------------------------------------------------------------------------------------------

   string tmpC1;
   string tmpE1;
   string tmpF1;

   foreach(tmpN,tmpW.Split("&")){
      tmpC1 = tmpN;
      tmpF1 = tmpC1.Substr(0, 4);
      if (tmpF1 == "auml") { tmpF1 = "ä"; }
      if (tmpF1 == "ouml") { tmpF1 = "ö"; }
      if (tmpF1 == "uuml") { tmpF1 = "ü"; }
      if (tmpF1 == "Auml") { tmpF1 = "Ä"; }
      if (tmpF1 == "Ouml") { tmpF1 = "Ö"; }
      if (tmpF1 == "Uuml") { tmpF1 = "Ü"; }
      if (tmpF1 == "sup2") { tmpF1 = "²"; }
      if (tmpF1 == "deg;") { tmpF1 = "°"; }
      if (tmpF1 == "szli") { tmpF1 = "ß"; }
      if (tmpF1 == "°") {tmpC1 = tmpF1 # tmpC1.Substr(0, tmpW.Length()); }
      if (tmpF1 == "ß") { tmpC1 = tmpF1 # tmpC1.Substr(6, tmpW.Length()); }
      else{ tmpC1 = tmpF1 # tmpC1.Substr(5, tmpW.Length()); }
      tmpE1 = tmpE1 + tmpC1;
   }
   tmpW = tmpE1;

   !---------------------------------------------------------------------------------------------------------
   ! Anzahl der Warnungen ermitteln
   !---------------------------------------------------------------------------------------------------------

   tmpB1 = 0;
   tmpF1 = tmpW;
   tmpU = "tr  td";
   tmpY = 1;

   while (tmpY > 0) {
      tmpY = tmpF1.Find(tmpU);
      tmpF1 = tmpF1.Substr(tmpY + 6, 5000);
      if(tmpY > 0){
         tmpB1 = tmpB1 + 1;
      }
   }

   !---------------------------------------------------------------------------------------------------------
   ! Warnung auslesen, Tabellenzeile der Region tmpJn, zerlegen und filetieren
   !---------------------------------------------------------------------------------------------------------

   string tmpG1;
   tmpU = "tr";
   tmpV = "/tr";
   tmpF1 = tmpW;

   if (tmpJ == "ein") {
      tmpY = tmpF1.Find(tmpU);
      tmpZ = tmpF1.Find(tmpV);
      tmpF1 = tmpF1.Substr(tmpZ + 3, tmpF1.Length());   
      tmpA1 = 1;
      tmpS = 0;
      while ((tmpA1 >= 0) && (tmpB1 > 0)) {
         tmpS = tmpS + 1;
         tmpY = tmpF1.Find(tmpU);
         tmpZ = tmpF1.Find(tmpV);
         tmpG1 = tmpF1.Substr(tmpY + 3, tmpZ - tmpY);
         foreach (tmpN, tmpK) {
            if (tmpG1.Find(tmpN) < 0) { tmpA1 = -1; }
         }
         if (tmpA1 >= 0){
            tmpF1 = tmpF1.Substr(tmpZ + 3, tmpF1.Length());
            tmpB1 = tmpB1 - 1;
         }
      }
      if (tmpL == "ein") {
         WriteLine("Anzahl Loops Filter: " # tmpS);
      }
   }
}

if (tmpB1 > 0) {

   tmpU = "td"; tmpV = "/td"; tmpY = tmpF1.Find(tmpU);
   tmpZ = tmpF1.Find(tmpV);
   string tmpH1 = tmpF1.Substr(tmpY + 3, (tmpZ - tmpY) - 4);
   
   tmpF1 = tmpF1.Substr(tmpZ + 3, tmpF1.Length());
   tmpY = tmpF1.Find(tmpU);
   tmpZ = tmpF1.Find(tmpV);
   string tmpI1 = tmpF1.Substr(tmpY + 3, (tmpZ - tmpY) - 4);
   
   tmpF1 = tmpF1.Substr(tmpZ + 3, tmpF1.Length());
   tmpY = tmpF1.Find(tmpU);
   tmpZ = tmpF1.Find(tmpV);
   string tmpJ1 = tmpF1.Substr(tmpY + 3, (tmpZ - tmpY) - 4);
   
   tmpF1 = tmpF1.Substr(tmpZ + 3, tmpF1.Length());
   tmpY = tmpF1.Find(tmpU);
   tmpZ = tmpF1.Find(tmpV);
   string tmpK1 = tmpF1.Substr(tmpY + 3, (tmpZ - tmpY) - 3);
   
   tmpF1 = tmpH1; tmpU = "vor ";
   tmpY = tmpF1.Find(tmpU);
   string tmpL1 = tmpF1.Substr(tmpY + 4, tmpF1.Length());
   
   tmpF1 = tmpH1; tmpU = " ";
   tmpF1 = tmpF1.Substr(9, tmpF1.Length());
   tmpY = tmpF1.Find(tmpU);
   string tmpM1 = tmpF1.Substr(0, tmpY);

   !---------------------------------------------------------------------------------------------------------
   ! Besonderheiten Warnungsart/Schlagwort (z.B. Warnungen des Seewetterdienstes)
   !---------------------------------------------------------------------------------------------------------

   tmpU = " - Warnung des Seewetterdienstes";
   if (tmpH1.Find(tmpU) >= 0) {
      tmpF1 = tmpH1;
      tmpY = tmpF1.Find(tmpU);
      tmpM1 = tmpF1.Substr(0, tmpY);
     tmpL1 = tmpM1;
   }

   !---------------------------------------------------------------------------------------------------------
   ! Ausgabe in Systemvariablen und Debug-Ausgabe
   !---------------------------------------------------------------------------------------------------------
   
   if (tmpL == "aus") {
      if (tmpB1.ToString(0) != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpC).Value().ToString(0)) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpC).State(tmpB1.ToString(0)); }
      if (tmpH1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpD).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpD).State(tmpH1); }
      if (tmpI1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpE).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpE).State(tmpI1); }
      if (tmpJ1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpF).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpF).State(tmpJ1); }
      if (tmpK1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).State(tmpK1); }
      if (tmpL1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpH).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpH).State(tmpL1); }
      if (tmpM1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpI).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpI).State(tmpM1); }
   }
   if (tmpL == "ein") {
      WriteLine(tmpC # ": " # tmpB1);
      WriteLine(tmpD # ": " # tmpH1);
      WriteLine(tmpE # ": " # tmpI1);
      WriteLine(tmpF # ": " # tmpJ1);
      WriteLine(tmpG # ": " # tmpK1);
      WriteLine(tmpH # ": " # tmpL1);
      WriteLine(tmpI # ": " # tmpM1);
   }
}

if (tmpB1 <= 0) {

   !---------------------------------------------------------------------------------------------------------
   ! Besondere Ausgaben (keine Warnung vorhanden oder getmpJt / DWD nicht erreichbar)
   !---------------------------------------------------------------------------------------------------------

   if ((tmpX >= 1) && (tmpL == "aus")) {
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpC).State("0");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpD).State("keine Warnung");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpE).State("--:--");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpF).State("--:--");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).State("keine Warnung");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpH).State("keine Warnung");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpI).State("keine Warnung"); }
   if ((tmpX < 1) && (tmpL == "aus")) {
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpC).State("0");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpD).State("Fehler");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpE).State("Fehler");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpF).State("Fehler");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).State("DWD-Warntabelle nicht erreichbar.");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpH).State("Fehler");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpI).State("Fehler"); }
   if ((tmpX >= 1) && (tmpL == "ein")) {
      WriteLine("Es wurde keine Warnung ausgegeben."); }
   if ((tmpX < 1) && (tmpL == "ein")) {
      WriteLine("Die DWD-Warntabelle ist nicht erreichbar."); }
}
if (tmpL == "ein") {
   WriteLine("Das Skript wurde ohne Unterbrechung ausgeführt.");
}

Hallo Gemeinde,

es ist doch sicherlich möglich, diese Unwetter Warnung (Langetext) per Telegramm senden zu lassen??
Ist es möglich, dass dazu mal jemand ein entsprechendes Script bereit stellt?
Also nur den Langetext dann...

Vielen Dank

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von fischmir » 29.06.2017, 11:43

Ja, das kannst du relativ leicht machen.

Suche mal nach zPNP hier im Forum. Wenn du das implementiert hast, kannst du aus jedem Programm jegliche Nachrichten schicken. Aber diese sende-Funktion in nur dieses Skrip einzubauen, macht keinen Sinn. Daher beschäftige dich mal mit dem zPNP.

Chris482
Beiträge: 17
Registriert: 03.03.2017, 21:34

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von Chris482 » 29.06.2017, 21:57

fischmir hat geschrieben:Ja, das kannst du relativ leicht machen.

Suche mal nach zPNP hier im Forum. Wenn du das implementiert hast, kannst du aus jedem Programm jegliche Nachrichten schicken. Aber diese sende-Funktion in nur dieses Skrip einzubauen, macht keinen Sinn. Daher beschäftige dich mal mit dem zPNP.
Danke für deine Antwort... Jedoch komme ich irgendwie gar nicht zurecht damit... Verstehe nicht, wie ich es einstellen soll, nur die Variable Wetterwarnung_Langtext auszulesen und mit zPNP zu versenden... Irgendwie zu hoch.
Ich hab schon vieles realisiert bekommen, aber das ist hart...

Gesendet von meinem SM-G935F mit Tapatalk

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von fischmir » 30.06.2017, 07:07

Den zPNP-Thread hast du aber schon gefunden? Dort ist doch eigentich alles ganz gut beschrieben.

viewtopic.php?f=31&t=26282#p229335

Sonstn dort mal melden, falls du Probleme hast.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von alchy » 30.06.2017, 08:05

Abgesehen davon, das ich - wenn überhaupt - das original Script verwenden würde, hänge einfach mal die Zeilen ganz unten an dein Script an.
Wobei du natürlich string chatid und string botAPI noch anpassen musst.

Code: Alles auswählen

string chatid = "+++++++++++++++";
string botAPI = "++++++++++++++++++++++I";
string message = tmpK1;
if (message != ""){
if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:1.CMD_EXEC")) { dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/cuxd/extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message#"' -d chat_id="#chatid);}
}


Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von AndiN » 30.06.2017, 13:17

Abgesehen davon, das ich - wenn überhaupt - das original Script verwenden würde
meinst Du das im Bezug auf die tmp?

Dann Fußnote: Wenn man noch 40+ Skript-Var frei hat. Sonst sind das 40 zusätzliche Variablen. Was bin ich froh, wenn endlich dieser Bug weg ist. Dann werden Skripte wieder lesbar ;-)

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von alchy » 01.07.2017, 11:40

Falsch ausgedrückt, mein Fehler.
Sofern er die Beta ReGaHss benutzt, wo das 200Variablen Problem nicht mehr existieren sollte.
und
Wenn er den Wunsch einer Erweiterung eines Scriptes hat, sollte er sich besser da hin wenden woher das Script stammt und nicht in den Kopie Thread.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Skript Probleme / Skriptübersicht (überarbeitete Skript

Beitrag von dtp » 11.07.2017, 07:48

Hi,

die Einbindung des zPNP für Langtexte des Unwetter-Skripts sollte eigentlich recht einfach funktionieren, indem man die Codezeilen

Code: Alles auswählen

      if (tmpK1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).State(tmpK1); }
ersetzt durch die folgenden Codezeilen:

Code: Alles auswählen

      if (tmpK1 != dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).Value()) {
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(tmpG).State(tmpK1); 
         ! +++++ Programm "CCU PRG Push-Nachrichten" ausführen +++++
         dom.GetObject("CCU SV Push Prio").State("0");
         dom.GetObject("CCU SV Push Text").State(tmpK1);
         dom.GetObject("CCU PRG Push-Nachrichten").ProgramExecute(); }
Natürlich müssen die Systemvariablen "CCU SV Push Prio", "CCU SV Push Text" und „CCU SV Push Text Ref“ entsprechend der Anleitung im zPNP-Thread angelegt sein.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Link/Skript-Sammlung

Beitrag von AndiN » 19.07.2017, 22:31

Hallo,

da sich mit der neuen Firmware 2.29.18 das 200er Problem in Wohlgefallen aufgelöst hat, habe ich u.a. Text aus dem ersten Post gelöscht / Überschrift geändert und werde die Links zu diversen Themen stehen lassen (bzw. auf das Originalskript verlinken). Der Rest hat sich zum Glück erledigt

Alte Überschrift:
Skript Probleme / Skriptübersicht (überarbeitete Skripts)
Entfernter Text aus dem Kopfpost:
Hallo,

zum Thema Script Probleme gibt es bereits ein Thema (http://homematic-forum.de/forum/viewtop ... 26&t=19023) und dank Flaux gehören bei mir die Fehler der Vergangenheit an.

Das Problem wurde inzwischen von einigen Usern EQ3 gemeldet und lief dort unter dem Ticket (EQ3_SUPPORT-289). Die Dokumentation wurde daraufhin von EQ3 angepasst: "Achtung! Auf einer Homematic Zentrale können maximal 200 Variablen deklariert werden". :shock: Ob eine Lösung zu suchen angedacht ist, ist Stand heute nicht bekannt.[/strike]

:idea: Um zu sehen, wie viele Scriptvariablen man im Einsatz hat, hat BadenPower ein Skript geschrieben:Skript-Variabeln zählen

:arrow: Damit das Rad nicht von Jedem erfunden werden muss veröffentlichen wir hier die überarbeitete Skripts verschiedener Helfer. (die Variablen sind alle mit tmpA-Z und tmpA1-Z1 betitelt). Somit werden nur noch maximal 52 verschiedene Variablen in allen Skripts benötigt.

Wer noch neue Skripts für die Allgemeinheit beisteuern möchte:
  • Ursprungsskript in Windows-Editor kopieren
  • Dort über "Suchen und Ersetzen" den alten Variablennamen eingeben und durch neuen "tmp" ersetzen.
    :!: (ACHTUNG: Groß und Kleinschreibung beachten anhaken)
  • Zwischendurch immer wieder "Skript testen" um das Skript auf Funktion testen.
    :idea: ALTERNATIV: Es kann das von fischmir erarbeitete einfachere VBA Konzept zur Umstellung genutzt werden.
  • Nachdem ihr das überarbeitete Skript gepostet habt, nehme ich das in das u.a. Inhaltsverzeichnis auf
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“