undokumentierte Skript-Befehle

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

Moderator: Co-Administratoren

Benutzeravatar
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

Beitrag von Black » 05.07.2020, 12:49

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
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

dtp
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

Beitrag von dtp » 06.07.2020, 09:10

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.

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.

Belly
Beiträge: 22
Registriert: 24.06.2020, 08:07
System: CCU
Hat sich bedankt: 1 Mal

Re: undokumentierte Skript-Befehle

Beitrag von Belly » 06.07.2020, 21:08

alchy hat geschrieben:
04.07.2020, 22:27
der Parameter ist optional - richtig erkannt. BadenPower hat das schon vor Jahren dokumentiert.
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 :?

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

Re: undokumentierte Skript-Befehle

Beitrag von alchy » 06.07.2020, 21:56

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.
Black hat geschrieben:
05.07.2020, 12:49
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.
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. :lol:


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

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
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

Beitrag von Black » 06.07.2020, 23:31

alchy hat geschrieben:
06.07.2020, 21:56
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. :lol:
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 :lol: :lol:

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

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

Re: undokumentierte Skript-Befehle

Beitrag von MichaelN » 07.07.2020, 00:00

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 +++

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: undokumentierte Skript-Befehle

Beitrag von jp112sdl » 07.07.2020, 08:23

MichaelN hat geschrieben:
07.07.2020, 00:00
Es scheint einfach am Willen zu fehlen.
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.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Benutzeravatar
funkleuchtturm
Beiträge: 2365
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: undokumentierte Skript-Befehle

Beitrag von funkleuchtturm » 07.07.2020, 09:50

jp112sdl hat geschrieben:
07.07.2020, 08:23
https://homepioneers.de/die-zeiten-in-d ... st-vorbei/
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 :mrgreen:
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

dtp
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

Beitrag von dtp » 07.07.2020, 10:48

funkleuchtturm hat geschrieben:
07.07.2020, 09:50
...daß letztlich WLAN (2,4 und 5Ghz)das Rennen machen wird.
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.
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.

dtp
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

Beitrag von dtp » 07.07.2020, 10:53

MichaelN hat geschrieben:
07.07.2020, 00:00
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.
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.

Antworten

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