undokumentierte Skript-Befehle
Moderator: Co-Administratoren
- Black
- Beiträge: 5472
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 419 Mal
- Danksagung erhalten: 1071 Mal
- Kontaktdaten:
Re: undokumentierte Skript-Befehle
ich denke wenn jeder hier auch nur einen kleinen Teil zu beiträgt, ergibt das in der Summe dann einen ganz netten Wissenspool.
Zu irgendwelchen als streng geheim zurückgehaltenenen Beschreibungen habe ich eine einfache, im akademischen Umfeld gängige Meinung: Nicht publiziert ist wie nicht gefunden. kurz und knapp.
Dann mal mein erster Beitrag hier in dem Thread:
Methode: [object]= dom.CreateObject ([OT_TYPE],[opt OBJ_NAME],[opt OBJ_ID]);
Methode erzeugt ein Object des Types OT_TYPE, wenn erfolgreich, ist das Ergebnis die Referenz auf das erzeugte Objekt, ansonsten null.
Beispiel:
object oEnum= dom.CreateObject (OT_ENUM);
erzeugt in der Rega ein neues Object hier vom Type OT_ENUM, bei erfolgrecher Anlage referenziert oEnum dieses neu erzeugte Object, bei fehlschlag referenziert dieses null.
Die nächsten beiden Parameter sind optional
der zweite Parameter gibt diesem Object bei der Anlage auch gleich einen Namen
object oEnum= dom.CreateObject (OT_ENUM,"TestAufzählung");
der Dritte Parameter versucht dieses Object auf einer bestimmen ID anzulegen. Normalerweise ist dieses eher Kontraproduktiv, da lässt man die Rega die IDs vergeben. man braucht dieses aber für z.B. Reparaturzwecke.
Das Standartbeispiel ist: eine abhanden gekommene oder versehentlich gelöscht oder sonstwie im Nirvana verschwundene Anwesenheitsvariable (die berühmte 950er)
object oID= dom.CreateObject(OT_VARDP,"${sysVarPresence}","950"); wäre die Zeile, die eine 950er Anwesenheitsvariable genau mit der nummer 950 wieder erzeugt (das alleine reicht aber nicht, die kompletten >Code habe ich hier mal geschrieben gehabt, auch der SDV benutzt diese Folge um diese Sysvar rekonstruieren zu können.
Das Gegenstück zu CreateObject ist dann DeleteObject
[boolean] =dom.DeleteObject (ID [int,string, object]) löscht ein Object mit der übergebenen ID oder das übergebene Object
Black
Zu irgendwelchen als streng geheim zurückgehaltenenen Beschreibungen habe ich eine einfache, im akademischen Umfeld gängige Meinung: Nicht publiziert ist wie nicht gefunden. kurz und knapp.
Dann mal mein erster Beitrag hier in dem Thread:
Methode: [object]= dom.CreateObject ([OT_TYPE],[opt OBJ_NAME],[opt OBJ_ID]);
Methode erzeugt ein Object des Types OT_TYPE, wenn erfolgreich, ist das Ergebnis die Referenz auf das erzeugte Objekt, ansonsten null.
Beispiel:
object oEnum= dom.CreateObject (OT_ENUM);
erzeugt in der Rega ein neues Object hier vom Type OT_ENUM, bei erfolgrecher Anlage referenziert oEnum dieses neu erzeugte Object, bei fehlschlag referenziert dieses null.
Die nächsten beiden Parameter sind optional
der zweite Parameter gibt diesem Object bei der Anlage auch gleich einen Namen
object oEnum= dom.CreateObject (OT_ENUM,"TestAufzählung");
der Dritte Parameter versucht dieses Object auf einer bestimmen ID anzulegen. Normalerweise ist dieses eher Kontraproduktiv, da lässt man die Rega die IDs vergeben. man braucht dieses aber für z.B. Reparaturzwecke.
Das Standartbeispiel ist: eine abhanden gekommene oder versehentlich gelöscht oder sonstwie im Nirvana verschwundene Anwesenheitsvariable (die berühmte 950er)
object oID= dom.CreateObject(OT_VARDP,"${sysVarPresence}","950"); wäre die Zeile, die eine 950er Anwesenheitsvariable genau mit der nummer 950 wieder erzeugt (das alleine reicht aber nicht, die kompletten >Code habe ich hier mal geschrieben gehabt, auch der SDV benutzt diese Folge um diese Sysvar rekonstruieren zu können.
Das Gegenstück zu CreateObject ist dann DeleteObject
[boolean] =dom.DeleteObject (ID [int,string, object]) löscht ein Object mit der übergebenen ID oder das übergebene Object
Black
Zuletzt geändert von Black am 08.07.2020, 08:53, insgesamt 2-mal geändert.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: undokumentierte Skript-Befehle
Hier mal ein Beispiel, wie ich eine Systemvariable per Skript anlege und auch wieder lösche, wenn sie zuvor angelegt wurde, aber der Name nicht mehr vergeben wird.
Das Löschen ist vielleicht nicht die "feine englische Art", weil ich dazu sämtliche Systemvariablen durchlaufe und nach der entsprechenden DPInfo suche, unter der sie angelegt wurde. Der Sinn, der hinter dieser Art des Löschens steckt, ist der, dass auf diese Weise leicht erkennbar ist, wenn jemand das Setzen der Systemvariablen vergessen haben sollte und deswegen etwas nicht funktioniert.
Das Löschen ist vielleicht nicht die "feine englische Art", weil ich dazu sämtliche Systemvariablen durchlaufe und nach der entsprechenden DPInfo suche, unter der sie angelegt wurde. Der Sinn, der hinter dieser Art des Löschens steckt, ist der, dass auf diese Weise leicht erkennbar ist, wenn jemand das Setzen der Systemvariablen vergessen haben sollte und deswegen etwas nicht funktioniert.
Code: Alles auswählen
string svPushImage = ""; ! Link auf ein anzufügendes Bild (z.B. "CCU SV Push Bild"), Voreinstellung: ""
string svName;
object svObject; object svObjectList;
if(svPushImage){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushImage); svObject.DPInfo("Link für ein zu sendendes Bild"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{image = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Link für ein zu sendendes Bild"){dom.DeleteObject(svObject);}
}
}
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: undokumentierte Skript-Befehle
Was ist denn das für eine Doku, die du da hast, und wo finde ich sie? Google brachte auf die Schnelle nur tote Links und Gründe, warum BadenPower gebannt wurde
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: undokumentierte Skript-Befehle
Die gepostete Seite kommt aus den >>HM Internals von BadenPower<< der nicht mehr hier aktiv sein kann. Sein Tool ist genauso wenig "ganz öffentlich" erhältlich wie z.B. das SDV von Black. Das haben sie unter anderem gemeinsam.
Aber um im Threadtopic zu bleiben:
Wie im > anderen Thread von dir <, kann man .ValueName() hier auch noch nennen als "undokumentierte Skript-Befehl". Auch wenn ich die Methode schon das ein oder andere Mal hier gepostet habe, ist sie doch wohl nicht so gebräuchlich.
Wenn jemand ein Buch nicht hat, in dem er etwas nachlesen könnte, dann kann er ja auch nicht behaupten, dass das Wissen nicht da wäre.
Alchy
Aber um im Threadtopic zu bleiben:
Wie im > anderen Thread von dir <, kann man .ValueName() hier auch noch nennen als "undokumentierte Skript-Befehl". Auch wenn ich die Methode schon das ein oder andere Mal hier gepostet habe, ist sie doch wohl nicht so gebräuchlich.
Wo gibt es denn was streng Geheimes und wer hält was zurück?
Wenn jemand ein Buch nicht hat, in dem er etwas nachlesen könnte, dann kann er ja auch nicht behaupten, dass das Wissen nicht da wäre.
Alchy
Zuletzt geändert von alchy am 06.07.2020, 22:20, insgesamt 1-mal geändert.
Grund: Abschnittsreihenfolge geändert um Missverständnisse zu vermeiden
Grund: Abschnittsreihenfolge geändert um Missverständnisse zu vermeiden
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.
- Black
- Beiträge: 5472
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 419 Mal
- Danksagung erhalten: 1071 Mal
- Kontaktdaten:
Re: undokumentierte Skript-Befehle
Auch wenn dies eine rein rhetorische Frage war, so können diese Frage nach dem "wer" doch bei Betrachtung der Vergangenheit eine Menge Leute beantworten
nix für ungut, Black
Zuletzt geändert von Black am 08.07.2020, 13:35, insgesamt 1-mal geändert.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
-
- Beiträge: 9656
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 697 Mal
- Danksagung erhalten: 1617 Mal
Re: undokumentierte Skript-Befehle
Da bekleckern sich alle Beteiligte nicht mit Ruhm. Eq-3 an erster Stelle. Mal eine studentische Hilfskraft 3 Monate bezahlt und man hätte für kleines Geld eine vernünftige Dokumentation. Es scheint einfach am Willen zu fehlen.
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 +++
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 +++
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: undokumentierte Skript-Befehle
Das kann nicht sein...
https://homepioneers.de/die-zeiten-in-d ... st-vorbei/
Es gibt Zehntausende Anwender, die heute Software auf die CCU laden und selbst programmieren. Die wollen wir unterstützen.
- funkleuchtturm
- Beiträge: 2365
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 357 Mal
- Kontaktdaten:
Re: undokumentierte Skript-Befehle
So langsam begreift man auch bei ELV, daß 868Mhz-Funktechnik nicht das "Gelbe vom EI" ist und daß letztlich WLAN (2,4 und 5Ghz)das Rennen machen wird. Allein schon die 1%-Restriktion bei der 868-Funkerei ist auf Dauer problematisch und zusätzlich kommen in diesen Bereich neue Funkdienste wie RFID mit mehreren Watt Leistung!!
... aber mein Statement gehört eigentlich nicht in diesen Thread
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: undokumentierte Skript-Befehle
WLAN braucht für rein Batterie betriebene Geräte einfach zu viel Strom. Ich halte die gegenwärtige Funklösung daher für die bessere, da sie einen guten Kompromiss aus Funkreichweite und Energieverbrauch darstellt.funkleuchtturm hat geschrieben: ↑07.07.2020, 09:50...daß letztlich WLAN (2,4 und 5Ghz)das Rennen machen wird.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: undokumentierte Skript-Befehle
eQ-3 möchte ja schon keinen Support liefern, wenn man Skripte auf seiner CCU laufen hat. Warum sollten sie also Interesse daran haben, alle möglichen Skript-Befehle zu dokumentieren?
Ich komme eigentlich mit den offiziell dokumentierten Skript-Befehlen ganz gut zurecht. Sinnvoll wäre aber meines Erachtens, in der Doku darauf hinzuweisen, dass man statt "dom.GetObject(...)" besser "dom.GetObject(ID_xxxx).Get(...)" verwenden sollte.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.