Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
JPS
Beiträge: 1019
Registriert: 07.08.2010, 22:51
Kontaktdaten:

Re: Script Probleme (überarbeitete Skripts)

Beitrag von JPS » 11.08.2016, 15:27

HomeMatic – Gaszähler auswerten mit HM-EM-TX-WM von JPS, umgeschrieben von JPS:

Auswerteskript:

Code: Alles auswählen

object tmpA = dom.GetObject("BidCos-RF.MEQ00XXXXX:1.GAS_POWER");
object tmpB = dom.GetObject("BidCos-RF.MEQ00XXXXX:1.GAS_ENERGY_COUNTER");
var tmpC = dom.GetObject("Gas ENERGY_COUNTER");
var tmpD = dom.GetObject("Gas Referenz Zaehlerstand");
var tmpE = dom.GetObject("Gas Zaehlerstand");
var tmpF = dom.GetObject("Gas Leistungsaufnahme aktuell");
var tmpG = dom.GetObject("Gas Referenz Verbrauch seit letzter Ablesung");
var tmpH = dom.GetObject("Gas Verbrauch seit letzter Ablesung");
var tmpI = dom.GetObject("Gas Referenz Verbrauch heute");
var tmpJ = dom.GetObject("Gas Verbrauch heute");
var tmpK = dom.GetObject("Gas Referenz Verbrauch laufende Woche");
var tmpL = dom.GetObject("Gas Verbrauch laufende Woche");
var tmpM = dom.GetObject("Gas Referenz Verbrauch laufender Monat");
var tmpN = dom.GetObject("Gas Verbrauch laufender Monat");
var tmpO = dom.GetObject("Gas Referenz Verbrauch laufendes Kalenderjahr");
var tmpP = dom.GetObject("Gas Verbrauch laufendes Kalenderjahr");
	if ((tmpB.State() + 0.001) < tmpC.State()) {
	tmpD.State(tmpD.State() + 838.8607);
	}
tmpC.State(tmpB.State());
tmpE.State(tmpD.State() + (tmpB.State()/1000));
tmpF.State(tmpA.State());
tmpH.State(tmpE.State() - tmpG.State());
tmpJ.State(tmpE.State() - tmpI.State());
tmpL.State(tmpE.State() - tmpK.State());
tmpN.State(tmpE.State() - tmpM.State());
tmpP.State(tmpE.State() - tmpO.State());
Rücksetzskripte:

Code: Alles auswählen

var tmpA = dom.GetObject("Gas Verbrauch heute");
var tmpB = dom.GetObject("Gas Referenz Verbrauch heute");
tmpB.State(tmpA.State() + tmpB.State());

Code: Alles auswählen

var tmpA = dom.GetObject("Gas Verbrauch laufende Woche");
var tmpB = dom.GetObject("Gas Referenz Verbrauch laufende Woche");
tmpB.State(tmpA.State() + tmpB.State());

Code: Alles auswählen

var tmpA = dom.GetObject("Gas Verbrauch laufender Monat");
var tmpB = dom.GetObject("Gas Referenz Verbrauch laufender Monat");
tmpB.State(tmpA.State() + tmpB.State());

Code: Alles auswählen

var tmpA = dom.GetObject("Gas Verbrauch laufendes Kalenderjahr");
var tmpB = dom.GetObject("Gas Referenz Verbrauch laufendes Kalenderjahr");
tmpB.State(tmpA.State() + tmpB.State());

Code: Alles auswählen

var tmpA = dom.GetObject("Gas Verbrauch seit letzter Ablesung");
var tmpB = dom.GetObject("Gas Referenz Verbrauch seit letzter Ablesung");
tmpB.State(tmpA.State() + tmpB.State());
SMART WOHNEN by sTeRn AV | Meine Lösungen, um das Leben zuhause "smarter" zu machen.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
AndiN
Beiträge: 2434
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

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

Beitrag von AndiN » 12.08.2016, 10:22

Wann lief welches Programm das letzte Mal von Alchy (finde den Urpsrungslink leider nicht mehr)

Code: Alles auswählen

! Alle Programme mit letzter Startzeit by Alchy

object tmpB = dom.GetObject( ID_PROGRAMS );
    string tmpA;
    string tmpC = "";
    foreach(tmpA,tmpB.EnumUsedIDs())
    {
    var tmpD=dom.GetObject(tmpA);
    string tmpK1= tmpD.ProgramLastExecuteTime();
    tmpC=tmpC  #tmpK1#" (letzmalig) : "# tmpD.Name() #" \n";
}
! dom.GetObject("SV_Log").State(tmpC);
WriteLine(tmpC);
Greenhorn

Letzter Reboot: 13.07.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.10.20190713, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
Wortmann30
Beiträge: 1246
Registriert: 21.03.2014, 21:39

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

Beitrag von Wortmann30 » 12.08.2016, 11:12

HomeMatic Statusanzeige HM-Dis-WM55

Es wurde meines wissens im Ursprüng hier entwickelt von DrTop:
http://homematic-forum.de/forum/viewtop ... M+DIS+WM55

Ich habe es dann für meine Zwecke auf TMP Variablen umgeschrieben und möchte das auch gerne posten. Ich will aber hier nicht vorenthalten das dasselbe für eine andere Variante auch schon gemacht wurde für ähnliche Zwecke von AndiN. Wer damals das zuerst gemacht hat weiß ich nicht mehr. Hier auf jeden Fall beide Scripte, beide sind sehr ähnlich.

Ich glaube das fehlt noch in der Liste und ist ne gute Ergänzung.

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige zustand der Alarmanlage, Lichter, Fenster

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! changed to tmp-variablen by wortmann30

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text 0 (Kanal 1 Text Zeile 1)
! 0x81 Text 1 (Kanal 1 Text Zeile 2)
! 0x82 Text 2 (Kanal 2 Text Zeile 3)
! 0x83 Text 3 (Kanal 2 Text Zeile 4)
! 0x84 Text 4 (Kanal 3 Text Zeile 5)
! 0x85 Text 5 (Kanal 3 Text Zeile 6)
! 0x86 Text 6 (Kanal 4 Text Zeile 7)
! 0x87 Text 7 (Kanal 4 Text Zeile 8)
! 0x88 Text 8 (Kanal 5 Text Zeile 9)
! 0x89 Text 9 (Kanal 5 Text Zeile 10)
! 0x8A Text 10 (Kanal 6 Text Zeile 11)
! 0x8B Text 11 (Kanal 6 Text Zeile 12)
! 0x8C Text 12 (Kanal 7 Text Zeile 13)
! 0x8D Text 13 (Kanal 7 Text Zeile 14)
! 0x8E Text 14 (Kanal 8 Text Zeile 15)
! 0x8F Text 15 (Kanal 8 Text Zeile 16)
! 0x90 Text 16 (Kanal 9 Text Zeile 17)
! 0x91 Text 17 (Kanal 9 Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

string tmpA = "Zeile 1";
string tmpF = "0x80";
string tmpM = "";

string tmpB = "Zeile 2";
string tmpG = "0x80";
string tmpN = "";

string tmpC = "Zeile 3";
string tmpH = "0x80";
string tmpO = "";

string tmpD = "Zeile 4";
string tmpI = "0x80";
string tmpP = "";

string tmpE = "Zeile 5";
string tmpJ = "0x80";
string tmpQ = "";

string tmpL = "Zeile 6";
string tmpK = "0x80";
string tmpR = "";

! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


! #### Alarmanlage Zustand? #######
! ## Einlesen der Sys-Var Alarmanlage

! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Blau, Icon Information
tmpA = "Alarmanlage";
tmpM = "0x86";
tmpF ="0x85";

var tmpS = dom.GetObject("Alarmanlage");
if (tmpS.State()==0){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Grün, Icon Fehler
tmpB = "Unscharf";
tmpN = "0x84";
tmpG ="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Rot, Icon  Alles ok
tmpB = "SCHARF";
tmpG = "0x81";
tmpN = "0x85";
}

! #### Alle Fenster zu ? #######
! ## Einlesen der Sys-Var Fensteroffen

! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 3 , Textfarbe Blau, Icon Information
tmpC = "Fenster";
tmpO = "0x86";
tmpH ="0x85";

var tmpS = dom.GetObject("Fensteroffen");
if (tmpS.State()==1){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 4 , Textfarbe Grün/Rot, Icon Geöffnet/Geschlossen
tmpD = "Geschlossen";
tmpP = "0x83";
tmpI ="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Rot, Icon  Offen
tmpD = "Offen";
tmpI = "0x81";
tmpP = "0x82";
}

! #### Alle Lichter aus ? #######
! ## Einlesen der Sys-Var Licht

! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 5 , Textfarbe Blau, Icon Information
tmpE = "Lichter";
tmpQ = "0x86";
tmpJ ="0x85";

var tmpS = dom.GetObject("Licht");
if (tmpS.State()==0){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Grün, Icon An
tmpL = "Aus";
tmpR = "0x80";
tmpK ="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Rot, Icon  Aus
tmpL = "An";
tmpK = "0x81";
tmpR = "0x81";
}

! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string tmpT="|";
string tmpU = tmpA # tmpT # tmpF # tmpT # tmpM # "\t";
tmpU = tmpU # tmpB # tmpT # tmpG # tmpT # tmpN # "\t";
tmpU = tmpU # tmpC # tmpT # tmpH # tmpT # tmpO # "\t";
tmpU = tmpU # tmpD # tmpT # tmpI # tmpT # tmpP # "\t";
tmpU = tmpU # tmpE # tmpT # tmpJ # tmpT # tmpQ # "\t";
tmpU = tmpU # tmpL # tmpT # tmpK # tmpT # tmpR;

string tmpV = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
tmpV = tmpV # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
tmpV = tmpV # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
tmpV = tmpV # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E"; 

string tmpW;
string tmpX;
integer tmpY;
string tmpZ;
string tmpA1;
string tmpB1;

string tmpC1 = "0x02";
foreach(tmpW, tmpU) {
   tmpA1 = tmpW.StrValueByIndex(tmpT, 0);
   tmpB1 = tmpW.StrValueByIndex(tmpT, 2);
   if ((tmpA1 <> "") || (tmpB1 <> "")) {
      tmpC1 = tmpC1 # ",0x12";
      if ((tmpA1.Substr(0,2) == "0x") && (tmpA1.Length() == 4)) {
         tmpC1 = tmpC1 # "," # tmpA1;
         tmpY = 12;
      }
      else {
         tmpY = 0;
      }
      while ((tmpY < tmpA1.Length()) && (tmpY < 12)) { 
         tmpZ = tmpA1.Substr(tmpY, 1);     
         foreach(tmpX, tmpV){
            if (tmpZ == tmpX.Substr(0,1)){tmpC1 = tmpC1 # tmpX.Substr(1,5);}
         }
         tmpY = tmpY + 1; 
      }
      tmpC1 = tmpC1 # ",0x11," # tmpW.StrValueByIndex(tmpT, 1);
      if (tmpB1 <> "") {
         tmpC1 = tmpC1 # ",0x13," # tmpB1;
      }
   }
   tmpC1 = tmpC1 # ",0x0A";
}
tmpC1 = tmpC1 # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(tmpC1);

! ##### FERTIG #####
Und das von AndiN

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, AußentmpVeratur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen
!! (c) DrTob
!! optimized by thkl
!! changed by wortmann30
! auf tmp-Variablen umgeschrieben von AndiN

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau

! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text 0 (Kanal 1 Text Zeile 1)
! 0x81 Text 1 (Kanal 1 Text Zeile 2)
! 0x82 Text 2 (Kanal 2 Text Zeile 3)
! 0x83 Text 3 (Kanal 2 Text Zeile 4)
! 0x84 Text 4 (Kanal 3 Text Zeile 5)
! 0x85 Text 5 (Kanal 3 Text Zeile 6)
! 0x86 Text 6 (Kanal 4 Text Zeile 7)
! 0x87 Text 7 (Kanal 4 Text Zeile 8)
! 0x88 Text 8 (Kanal 5 Text Zeile 9)
! 0x89 Text 9 (Kanal 5 Text Zeile 10)
! 0x8A Text 10 (Kanal 6 Text Zeile 11)
! 0x8B Text 11 (Kanal 6 Text Zeile 12)
! 0x8C Text 12 (Kanal 7 Text Zeile 13)
! 0x8D Text 13 (Kanal 7 Text Zeile 14)
! 0x8E Text 14 (Kanal 8 Text Zeile 15)
! 0x8F Text 15 (Kanal 8 Text Zeile 16)
! 0x90 Text 16 (Kanal 9 Text Zeile 17)
! 0x91 Text 17 (Kanal 9 Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

string tmpA = "Zeile 1";
string tmpF = "0x80";
string tmpM = "";

string tmpB = "Zeile 2";
string tmpG = "0x80";
string tmpN = "";

string tmpC = "Zeile 3";
string tmpH = "0x80";
string tmpO = "";

string tmpD = "Zeile 4";
string tmpI = "0x80";
string tmpP = "";

string tmpE = "Zeile 5";
string tmpJ = "0x80";
string tmpQ = "";

string tmpU = "Zeile 6";
string tmpK = "0x80";
string tmpR = "";

! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------



! #### Alle Fenster zu ? #######
! ## Einlesen der Sys-Var Fenster

var tmpS = dom.GetObject("Fenster");
if (tmpS.State()==1){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Weiß, Icon geschlossen
tmpA = "Fenster";
tmpM = "0x83";
tmpF="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Rot, Icon  OFFEN
tmpA = "Fenster";
tmpF = "0x81";
tmpM = "0x82";
}

! #### Alle Lichter aus ? #######
! ## Einlesen der Sys-Var Licht

var tmpS = dom.GetObject("Licht");
if (tmpS.State()==0){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Grün, Icon AUS
tmpB = "Lichter";
tmpN = "0x80";
tmpG="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Rot, Icon  EIN
tmpB = "Lichter";
tmpG = "0x81";
tmpN = "0x81";
}

! ## AußentmpVeratur

var tmpT="LEQ0644331";
var tmpW=dom.GetObject("BidCos-RF."#tmpT#":1.TEMPERATURE");
var tmpV = tmpW.Value();
if (tmpV > -10.0)
{ tmpV = tmpV.ToString(1);
  tmpC = "Außen "#tmpV#" C";
}
else
{ tmpV = tmpV.ToString(1);
  tmpC = "Außen"#tmpV#" C";
}
tmpH = "0x85";
tmpO = "0x86";

!##Füllstand

tmpD ="Füllstand";
tmpI = "0x82";
tmpP = "0x86";

tmpE = dom.GetObject("BidCos-RF.MEQ0690230:1.FILLING_LEVEL").State().ToString() # "%";
tmpJ = "0x82";
tmpQ = "0x86";

var tmpS = dom.GetObject("Zisterne Filter");
if (tmpS.State()==0){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Weiß, Icon Ok
tmpU = "Sauber";
tmpR= "0x85";
tmpK="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Rot, Icon Signal Rot
tmpU = "Verschmutzt";
tmpK = "0x81";
tmpR = "0x8B";
}

! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string tmpX="|";
string tmpZ = tmpA # tmpX # tmpF # tmpX # tmpM # "\t";
tmpZ = tmpZ # tmpB # tmpX # tmpG # tmpX # tmpN # "\t";
tmpZ = tmpZ # tmpC # tmpX # tmpH # tmpX # tmpO # "\t";
tmpZ = tmpZ # tmpD # tmpX # tmpI # tmpX # tmpP # "\t";
tmpZ = tmpZ # tmpE # tmpX # tmpJ # tmpX # tmpQ # "\t";
tmpZ = tmpZ # tmpU # tmpX # tmpK # tmpX # tmpR;

string tmpA1 = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
tmpA1 = tmpA1 # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
tmpA1 = tmpA1 # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
tmpA1 = tmpA1 # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E";

string tmpB1;
string tmpC1;
integer tmpG1;
string tmpD1;
string tmpE1;
string tmpY;

string tmpF1 = "0x02";
foreach(tmpB1, tmpZ) {
   tmpE1 = tmpB1.StrValueByIndex(tmpX, 0);
   tmpY = tmpB1.StrValueByIndex(tmpX, 2);
   if ((tmpE1 <> "") || (tmpY <> "")) {
      tmpF1 = tmpF1 # ",0x12";
      if ((tmpE1.Substr(0,2) == "0x") && (tmpE1.Length() == 4)) {
         tmpF1 = tmpF1 # "," # tmpE1;
         tmpG1 = 12;
      }
      else {
         tmpG1 = 0;
      }
      while ((tmpG1 < tmpE1.Length()) && (tmpG1 < 12)) {
         tmpD1 = tmpE1.Substr(tmpG1, 1);     
         foreach(tmpC1, tmpA1){
            if (tmpD1 == tmpC1.Substr(0,1)){tmpF1 = tmpF1 # tmpC1.Substr(1,5);}
         }
         tmpG1 = tmpG1 + 1;
      }
      tmpF1 = tmpF1 # ",0x11," # tmpB1.StrValueByIndex(tmpX, 1);
      if (tmpY <> "") {
         tmpF1 = tmpF1 # ",0x13," # tmpY;
      }
   }
   tmpF1 = tmpF1 # ",0x0A";
}
tmpF1 = tmpF1 # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(tmpF1);

! ##### FERTIG #####
Grüsse


To be continued...

Benutzeravatar
Murmelbaerchen69
Beiträge: 272
Registriert: 01.12.2013, 22:55
Wohnort: @home

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Murmelbaerchen69 » 12.08.2016, 17:09

Hallo,
JPS hat geschrieben:Das Skript um Push-Benachrichtigungen aufs Handy in HomeKey einzurichten von Jürgen Weiß umgeschrieben von JPS:

Code: Alles auswählen

! Geräte ID (mehrere IDs getrennt durch \t)
string tmpA = "registration_id1 \t registration_id2";

! Benachrichtigungsquelle
var tmpB = dom.GetObject("$src$");
var tmpC;
string tmpD;
if (tmpB != null) {
  var tmpC = dom.GetObject(tmpB.Channel());
  tmpD = tmpC.Name();
}

! Benachrichtigung
string tmpE = "EEQXXXXXXX";
string tmpF = "Klingel Haustür";
string tmpG = tmpD  # " am " # system.Date("%d.%m.%Y %H:%M:%S") # " Uhr";

string tmpH = "";
string tmpI;
foreach(tmpI, tmpA) {
    if (tmpH != "") {
        tmpH = tmpH # '\\",\\"';
    }
    tmpH = tmpH # tmpI;
}
string cmd = 'wget -q -T 5 -O /dev/null --no-check-certificate --header="Authorization: key=AIzaSyBrxU9-PayDHgmGPhiBfS-yDHlhwQTaDL8" --header="Content-Type: application/json" --post-data="{\\"tmpH\\":[\\"' # tmpH # '\\"],\\"data\\":{\\"tmpF\\":\\"' # tmpF # '\\",\\"tmpG\\":\\"' # tmpG # '\\",\\"tmpE\\":\\"' # tmpE # '\\"}}" https://android.googleapis.com/gcm/send';
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh -c '" # cmd # "'");
funktioniert so nicht bei mir:

Code: Alles auswählen

string cmd = 'wget -q -T 5 -O /dev/null --no-check-certificate --header="Authorization: key=AIzaSyBrxU9-PayDHgmGPhiBfS-yDHlhwQTaDL8" --header="Content-Type: application/json" --post-data="{\\"tmpH\\":[\\"' # tmpH # '\\"],\\"data\\":{\\"tmpF\\":\\"' # tmpF # '\\",\\"tmpG\\":\\"' # tmpG # '\\",\\"tmpE\\":\\"' # tmpE # '\\"}}" https://android.googleapis.com/gcm/send';
sondern nur so:

Code: Alles auswählen

string cmd = 'wget -q -T 5 -O /dev/null --no-check-certificate --header="Authorization: key=AIzaSyBrxU9-PayDHgmGPhiBfS-yDHlhwQTaDL8" --header="Content-Type: application/json" --post-data="{\\"registration_ids\\":[\\"' # tmpH # '\\"],\\"data\\":{\\"title\\":\\"' # tmpF # '\\",\\"message\\":\\"' # tmpG # '\\",\\"address\\":\\"' # tmpE # '\\"}}" https://android.googleapis.com/gcm/send';
Ist wohl ein wennig zu gut gemeint mit der Umstellung :wink:

Gruß Ralf
Das soll ein neuer Computer sein ? Warum steht den auf der Tastatur "ALT" ?

Benutzeravatar
Murmelbaerchen69
Beiträge: 272
Registriert: 01.12.2013, 22:55
Wohnort: @home

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

Beitrag von Murmelbaerchen69 » 12.08.2016, 17:15

Hallo,

könnte vielleicht jemand das Script von Flaux hier:
http://homematic-forum.de/forum/viewtop ... nd#p207667
umstellen, ich bekomme es nach der Umstellung nicht ans laufen - Anfänger halt. :roll:

Danke Ralf
Das soll ein neuer Computer sein ? Warum steht den auf der Tastatur "ALT" ?

Benutzeravatar
JPS
Beiträge: 1019
Registriert: 07.08.2010, 22:51
Kontaktdaten:

Re: Script Probleme (überarbeitete Skripts)

Beitrag von JPS » 12.08.2016, 17:20

Murmelbaerchen69 hat geschrieben:funktioniert so nicht bei mir:
Hallo Ralf, danke für den Hinweis, ist getestet und oben bereits geändert.

In der Tat hatte ich in der oben ursprünglich hinterlegten Version etwas zuviel konvertiert. Das passiert, wenn gleiche Namen in einem Skript für verschiedene Zwecke mehrfach vergeben werden. Da muss man echt aufpasen. :oops:
SMART WOHNEN by sTeRn AV | Meine Lösungen, um das Leben zuhause "smarter" zu machen.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
papi
Beiträge: 257
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW

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

Beitrag von papi » 19.08.2016, 21:19

Mich juckt es ja in den Fingern, auch noch die letzten Variablen rauszuschmeißen, aber bei Folgenden bin ich skeptisch, ob deren Name nicht aus irgendwelchen Gründen erhalten bleiben muss:

stderr
stdout
teilstr

Werden die Dinger von irgendeinem Addon (Email oder CUXD oder so) in dieser Form erwartet?

Weiterhin habe ich bei einem Skript noch ein Problem mit der Variable / dem Ausdruck "State". Ich bin mir nicht sicher, an welcher Stelle sie wirklich eine Variable darstellt und an welcher Stelle sie einen Status abfragt/übergibt:

Code: Alles auswählen

! Skript: "Ausloesenden Melder per Pushover nennen"

var tmpC=dom.GetObject("BMA");
string tmpA;
string tmpB = "";
foreach(tmpA,tmpC.EnumUsedIDs())
{var tmpD=dom.GetObject(tmpA);
  if(tmpD.IsTypeOf(OT_CHANNEL))
  {var tmpE=dom.GetObject(tmpD.Device());
    if(tmpE.HssType()=="HM-Sec-SD")
    {var state=tmpD.DPByHssDP("STATE");
       if(state.Value()){
     string tmpF = system.Date("%d.%m.%y %H:%M Uhr");
     tmpB=tmpB# tmpE.Name() #" ausgeloest um " #tmpF;
} } } }
if(tmpB!="")
{dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/cuxd/curl -s -k -d token='aistdochgeheimjksdfdjsK' -d user='usagicheuchnichtQxb' -d device='Iphone,IpadP' -d html='1' -d message='"#tmpB#"' -d priority=2 -d sound='persistent' -d retry=30 -d expire=1800 https://api.pushover.net/1/messages.json"); }

Zeile 11 - das erste "state" ist eine Variable, das zweite STATE aber wohl nicht oder?
Zeile 12 - ist sicher eine Variable
Zeile 17 - ist dann aber keine Variable oder?

Wäre nett, wenn mir mal einer auf die Sprünge helfen könnte, Danke!

Benutzeravatar
AndiN
Beiträge: 2434
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

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

Beitrag von AndiN » 19.08.2016, 23:11

var state .... => var Variable
if(state.Value()){ => if (Varibalbe.Value(){
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State => ist keine Variable.

Korrekt

Andi
Greenhorn

Letzter Reboot: 13.07.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.10.20190713, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
papi
Beiträge: 257
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW

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

Beitrag von papi » 21.08.2016, 09:50

Prima, Danke Andi!

Und was ist mit dem ersten Teil meiner Frage bezüglich stderr, stdout, teilstr?

Benutzeravatar
AndiN
Beiträge: 2434
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

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

Beitrag von AndiN » 23.08.2016, 16:06

Es gibt ein neues Skript-Variablen Skript von Baden. Wenn es wer umschreiben möchte (oder JPS, wenn Du Deins ersetzt)?

Sonnige Grüße aus dem Rheinland

Andi
Greenhorn

Letzter Reboot: 13.07.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.10.20190713, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Antworten

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