Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BadenPower

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

Beitrag von BadenPower » 29.08.2016, 11:30

BirkeB hat geschrieben:Theoretisch könnte ich aber auch eine im Script 1 deklarierte und beschriebene Variable im Script 2 verwenden wenn derselbe Name nicht im Script 2 deklariert ist.
Richtig.

Wenn Du allerdings Variablen global, also Skriptübergrifend verwenden möchtest, dann solltest Du einigen Vorsichtsmaßnahmen treffen.

Empfehlenswert:
Dem Namen ein eindeutiges Präfix voranstellen, welches Dir signalisiert, dass es sich um eine global verwendete Variable handelt. Also statt "MeineGlobaleVariable" -> "gMeineGlobaleVariable". Und eben diesen Variablenamen niemals in einem Skript erneut deklarieren, welches nicht zu diesem globalen Skript-Verbund gehört.

unbedingt befolgen:
In allen Skripten vor der Deklaration und Verwendung prüfen, ob diese bereits deklariert ist. Wenn nicht, dann deklarieren. Ein erneutes Deklarieren würde den bereits bestehenden Wert überschreiben.
Typprüfung der Variable durchführen. Also ist die Variable auch mit dem richtigen Typ deklariert, welchen ich verwenden möchte.

Wenn Du alles beachtest, dann steht einem bedenkenlosem Verwenden von globalen Skriptvariablen nichts im Wege.

.
.

BirkeB
Beiträge: 59
Registriert: 29.08.2016, 08:36
Hat sich bedankt: 8 Mal
Danksagung erhalten: 4 Mal

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

Beitrag von BirkeB » 29.08.2016, 12:11

Hallo

Vielen Dank an alle für die Erklärungen.

Gruß
BirkeB

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

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

Beitrag von koppenho » 29.08.2016, 23:10

BirkeB hat geschrieben:Theoretisch könnte ich aber auch eine im Script 1 deklarierte und beschriebene Variable im Script 2 verwenden wenn derselbe Name nicht im Script 2 deklariert ist.

Hab ich das so richtig verstanden?
Ja, das ist richtig.
Es soll Programmierer geben, die dieses Verhalten in ihren Skripten verwenden.
Aber das ist nicht ratsam.
BadenPower hat geschrieben: ..., dann steht einem bedenkenlosem Verwenden von globalen Skriptvariablen nichts im Wege.
Dieser Aussage möchte ich widersprechen.
Falls wir mit unseren Beschwerden bei eq-3 irgendwann mal Erfolg haben sollten und eine neue Firmware das 200-wiederverwendete-Variablen-Problem endlich fixt (so unwahrscheinlich das sein mag), dann werden Skripte mit "globalen" Variablen nicht mehr funktionieren.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

BadenPower

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

Beitrag von BadenPower » 30.08.2016, 10:06

koppenho hat geschrieben: Falls wir mit unseren Beschwerden bei eq-3 irgendwann mal Erfolg haben sollten und eine neue Firmware das 200-wiederverwendete-Variablen-Problem endlich fixt (so unwahrscheinlich das sein mag), dann werden Skripte mit "globalen" Variablen nicht mehr funktionieren.
Das wird allerdings nie geschehen, die die intern vorhandene Software die Technik der globalen Variableverwendung selbst benutzt.
.

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 » 25.09.2016, 01:11

Programmausführung loggen von Alchy

Version 1
- muss nicht editiert werden, weil ohne Skriptvariablen läuft -

Code: Alles auswählen

dom.GetObject('Programme_loggen').State(dom.GetObject("$this$").Name() #" wurde am "#system.Date("%d.%m. %H:%M Uhr") #" ausgefuehrt");
Version 2

Code: Alles auswählen

 ! Programmauslösende Systemvariable (jedes Types) oder Kanalnamen (soweit ich es überblicken kann) und auch das Zeitmodul ermitteln und Name und Zeit und Programmname in Stringvariable schreiben
! by Alchy 0.3
! +++++++++++++++++
string tmpA = "Fehler";
object tmpB = dom.GetObject("$src$");
if (tmpB){
if (tmpB.TypeName() == "HSSDP") {
tmpA = dom.GetObject("$this$").Name()#" durch " #dom.GetObject(((dom.GetObject(tmpB)).Channel())).Name()  ;
} else {
tmpA = dom.GetObject("$this$").Name()#" durch " #dom.GetObject(tmpB).Name() ;
}
dom.GetObject("Programme_loggen").State(tmpA);
}
Version 3

Code: Alles auswählen

! Programmauslösende Systemvariable (jedes Types) oder Kanalnamen (soweit ich es überblicken kann) und auch das Zeitmodul ermitteln und Name und Zeit und Programmname in Stringvariable schreiben
! by Alchy 0.3
! +++++++++++++++++
string tmpA = "Fehler";
object tmpB = dom.GetObject("$src$");
if (tmpB){
if (tmpB.TypeName() == "HSSDP") {
tmpA = dom.GetObject("$this$").Name()#" durch " #dom.GetObject(((dom.GetObject(tmpB)).Channel())).Name() #" am: "#system.Date("%d.%m. %H:%M Uhr") ;
} else {
tmpA = dom.GetObject("$this$").Name()#" durch " #dom.GetObject(tmpB).Name()#" am: "#system.Date("%d.%m. %H:%M Uhr") ;
}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/log2file/log2file.tcl " # slist);
}
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

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 » 24.10.2016, 20:15

Fehler: LED Internet blinkt, obwohl die CCU einen Internetzugang hat.

Ursache: "wird der Router neu gestartet, an dem die CCU angeschlossen ist, oder ist das Internet längere Zeit nicht erreichbar, blinkt die Internet LED an der CCU".

Lösung 1 (ohne CuXD):
  • per Terminalprogramm auf die Kommandozeile der CCU2 einloggen
  • in das Verzeichnis /etc/network/if-up.d/ wechseln

    Code: Alles auswählen

    cd /etc/network/if-up.d/
  • dort das Script eQ3StartNetwork starten

    Code: Alles auswählen

    sh eQ3StartNetwork
  • als Antwort sollte eth0 carrier detected erscheinen
  • die Datei hasInternet im Verzeichnis /var/status/ wurde neu angelegt
    Kontrolle mit

    Code: Alles auswählen

    cd /var/status
        ls
  • die Internet LED an der CCU leuchtet permanent
Lösung 2 (mit CUxD):
  • CUxD öffnen
  • In Registerkarte "Status" oben Rechts auf Button "Service" klicken
    A.png
    A.png (7.72 KiB) 5107 mal betrachtet
  • Unter Shell command den Befehl
    0.png
    0.png (2.85 KiB) 5107 mal betrachtet

    Code: Alles auswählen

     sh /etc/network/if-up.d/eQ3StartNetwork 
    eingeben
    1.png
    1.png (5.37 KiB) 5107 mal betrachtet
  • als Antwort sollte eth0 carrier detected erscheinen
    2.png
    2.png (2.58 KiB) 5107 mal betrachtet
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

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.10.2016, 17:54

Ich weiß nicht vom wem es ist, aber Alchy hat es gerade irgendwo gepostet. Das muss zwar nicht auf tmp umgeschrieben werden (weil man es über Skript testen ausführt). Dennoch wollte ich es der Sammlung hinzufügen.

Testen, ob CCU mit der Außenwelt verbunden ist

Code: Alles auswählen

string stderr;
string stdout;
integer Auslese;
system.Exec("ping -c 1 www.google.de",&stdout, &stderr);
Auslese = stdout.Find("ms");
if ( Auslese == -1 )
{
WriteLine("CCU ist NICHT mit der Welt verbunden");
}
if ( Auslese > 0)
{
WriteLine('CCU ist mit der Welt verbunden');
}
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

Benutzeravatar
BausatzFan
Beiträge: 106
Registriert: 05.10.2015, 21:36
Wohnort: Bayern

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

Beitrag von BausatzFan » 30.10.2016, 19:33

Danke AndiN,

ich habe das Problem mit der blinkenden LED fast regelmäßig und war daher für Deinen Beitrag sehr dankbar. Ich habe das Problem versucht mit CUxD zu lösen. Leider führt es nicht zu dem grwünschten Ergebnis. Ich erhalte folgende Antwort auf den Shell Command:

Code: Alles auswählen

udhcpc (v1.20.2) started
Sending discover...
Sending select for 192.168.178.49...
Lease of 192.168.178.49 obtained, lease time 864000
rm: can't remove '/var/etc/resolv.conf': No such file or directory
udhcpc (v1.20.2) started
Sending discover...
Sending select for 192.168.178.49...
Lease of 192.168.178.49 obtained, lease time 864000
Im Status steht auch danach noch " Kein TTY-Device connected!". Kann die blinkende LED bei mir eine andere Ursache haben?

Viele Grüße!
CCU3 - Firmwareversion: 3.41.11; 243 Kanaele in 84 Geraeten und 49 CUxD-Kanaele in 4 CUxD-Geraeten

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.10.2016, 19:37

AndiN hat geschrieben: Ich weiß nicht vom wem es ist, aber Alchy hat es gerade irgendwo gepostet.
Das Script habe ich schon gefühlt 100mal gepostet bzw. verlinkt, weil es einfach ein Totschläger für viele Probleme ist, die User so haben.
Ernsthafte Frage:
Willst du jetzt hier alles hinzufügen, was irgendwer, mal irgendwann postet bzw. gepostet hat ?


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.10.2016, 19:50

Alles nicht. Das wird wohl den Rahmen bei Weitem sprengen. Aber gefühlte hundert gefragte Skripte schon. Dieses Skript zum Beispiel ist ein sehr sinnvolles Tool für manches Problem. :D
Zuletzt geändert von AndiN am 30.09.2017, 14:53, insgesamt 1-mal geändert.
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)“