SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 12:41

Da der SDV ja immer weitere Features bekommt, wird es schwer diese Feature und deren Handhabung in dem bisher einzelnen vorhandenen Fred zu finden.

Hier soll es NUR um eine Sammlung von Script-Code gehen, welcher im ScriptEditor des SDV genutz werden kann.
So können sich Nutzer des SDV's hier mit entsprechendem Code versorgen und diesen je nach Bedarf einpflegen.


Hier soll damit eine Möglichkeit geschaffen werden; eine Code-Sammlung unter Mithilfe aller SDV-User zu erstellen, die nach Bedarf im
ScriptEditor genutzt werden können.
Es entfällt somit die Suche nach einem passenden Code/Codeschnipsel und das Kopieren in den ScriptEditor.
Der Code wird direkt im ScriptEditor geladen und man hat die Codes an einem Ort


Es besteht ja nicht nur die Möglichkeit zur Code-Vervollständigung per Tastaturkürzel (Strg + Shift+ F1-10-Taste).

Duch das Eintippen direkt im Editor (z.B. lo) wird ja nach dem Tastaturkürzel (Strg + Shift + Leertaste/Space) eine ComboBox geöffnet, welche sofort zu dem ersten Eintrag springt, der den bereits in dem ScriptEditor eingegebenen Zeichen entspricht.
Die Sortierung der Einträge erfolgt alphanumerisch.

Nach Auswahl des gewünschten Eintrags wird der hinterlegte Code in den ScriptEditor geladen (siehe auch viewtopic.php?f=31&t=47049&start=780#p613185).
Selbstverständlich ohne die anfangs getippten Zeichen zu belassen.

Code-Compl_001.PNG
Dazu muss lediglich in die Datei "autocomplete.sdv4" der entsprechende Eintrag mit dem Script-Code eingepflegt werden.
Die bereits bei anfänglicher Nutzung des SDV in der "autocomplete.sdv4" befindlichen Einträge können selbstverständlich editiert werden.
Wurde die Datei "autocomplete.sdv4" editiert, so muss der SDV z.Zt. noch neu gestartet werden.

Möchte man nun einen Eintrag hinzufügen, dann einfach eine Leerzeile unter dem letzten Code lassen und mit dem gewünschten Titel (je nach eigenem Bedarf) versehen.
Code-Compl_002.PNG
Code-Compl_002.PNG (21.59 KiB) 2765 mal betrachtet

Man kann dabei hinter den in der ComboBox anzuzeigenden Eintrag noch eine Ergänzung setzen,
welche dann auch auf die Tastaturkürzel
Strg + Shift + F1-10
in den ScriptEditor geschrieben werden.
Diese Ergänzung lautet
short=0-1 (wobei die 0 für die F10-Taste ist)
Code-Compl_003.PNG
Code-Compl_003.PNG (8.19 KiB) 2765 mal betrachtet

Macht regelmäßig ein Backup der Datei "autocmplete.sdv4"
So habt ihr immer eine gepflegte Code-Vervollständigung, auch wenn die Trümmerorgel abraucht.


BG Keks

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 13:01

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"
Erstellung einer Systemvariable vom Typ: Werteliste

Code: Alles auswählen

sysvar_Werteliste
=!- Anlegen einer Systemvariablen Typ -- Werteliste
=string sName= "NameDerSysvar";
=if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
=  object svObj = dom.CreateObject(OT_VARDP,sName);
=  svObj.DPInfo("BeschreibungDerSystemvariablen");
=  svObj.ValueUnit(""); 									!- Einheit der Systemvariablen
=  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
=  svObj.ValueType(ivtInteger);
=  svObj.ValueSubType(istEnum);
=  svObj.ValueList("Wert1;Wert2;Wert3"); 							!- Text der Wertelisten
=  svObj.State (0); 										!- Zustand der Sysvar nach dem Anlegen
=  dom.RTUpdate(0); 										!- Am Ende aller Initialisierungen
=}
Zuletzt geändert von nimmnenkeks am 05.11.2020, 13:15, insgesamt 2-mal geändert.

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 13:14

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"
Erstellung einer Systemvariable vom Typ: Zahl

Code: Alles auswählen

sysvar_Zahl
=!- Anlegen einer Systemvariablen Typ -- Zahl
=string sName= "NameDerSysvar";
=if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
=  object svObj = dom.CreateObject(OT_VARDP,sName);
=  svObj.DPInfo("BeschreibungDerSystemvariablen");
=  svObj.ValueUnit(""); 											!- Einheit der Systemvariablen
=  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
=  svObj.ValueType(ivtFloat);
=  svObj.ValueSubType(istGeneric);
=  svObj.ValueMin(-100); 											!- Minimalbereich der Systemvariablen
=  svObj.ValueMax(100); 											!- Maximalbereich der Systemvariablen
=  svObj.State (0); 												!- Zustand der Sysvar nach dem Anlegen
=  dom.RTUpdate(0); 												!- Am Ende aller Initialisierungen
=}

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 13:16

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"
Erstellung einer Systemvariable vom Typ: Zeichenkette

Code: Alles auswählen

sysvar_ZeichenKette
=!- Anlegen einer Systemvariablen Typ -- Zeichenkette
=string sName= "NameDerSysvar";
=if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
=  object svObj = dom.CreateObject(OT_VARDP,sName);
=  svObj.DPInfo("BeschreibungDerSystemvariablen");
=  svObj.ValueUnit("");												!- Einheit der Systemvariablen
=  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
=  svObj.ValueType(ivtString);
=  svObj.ValueSubType(istChar8859);
=  svObj.State (""); 												!- Zustand der Sysvar nach dem Anlegen
=  dom.RTUpdate(0); 												!- Am Ende aller Initialisierungen
=}

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 13:17

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"
Erstellung einer Systemvariable vom Typ: Bool

Code: Alles auswählen

sysvar_Bool
=!- Anlegen einer Systemvariablen Typ -- Bool
=string sName= "NameDerSysvar";
=if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
=  object svObj = dom.CreateObject(OT_VARDP,sName);
=  svObj.DPInfo("BeschreibungDerSystemvariablen");
=  svObj.ValueUnit(""); 										!- Einheit der Systemvariablen
=  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
=  svObj.ValueType(ivtBinary);
=  svObj.ValueSubType(istBool);
=  svObj.ValueName0("FALSCH");										!- Text der bei Zustand false angezeigt wird
=  svObj.ValueName1("WAHR"); 										!- Text der bei Zustand wahr angezeigt wird
=  svObj.State (false); 										!- Zustand der Sysvar nach dem Anlegen
=  dom.RTUpdate(0); 											!- Am Ende aller Initialisierungen
=}

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 05.11.2020, 13:19

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"
Erstellung einer Systemvariable vom Typ: Alarm

Code: Alles auswählen

sysvar_Alarm
=!- Anlegen einer Systemvariablen Typ -- Alarm
=string sName= "NameDerSysvar";
=if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
=  object svObj = dom.CreateObject(OT_ALARMDP,sName);
=  svObj.DPInfo("BeschreibungDerAlarmvariablen");
=  svObj.ValueUnit(""); 									!- Einheit der Systemvariablen
=  dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
=  svObj.ValueType(ivtBinary);
=  svObj.ValueSubType(istAlarm);
=  svObj.ValueName0("nicht ausgelöst"); 							!- Text der bei Zustand false angezeigt wird
=  svObj.ValueName1("ausgelöst"); 								!- Text der bei Zustand wahr angezeigt wird
=  dom.RTUpdate(0); 										!- Am Ende aller Initialisierungen
=}

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von Black » 07.11.2020, 19:00

Hi NimmnenKeks,

Interessanter Ansatz diese "most wanted" scriptstückchen zu sammeln. Wenn hier etwas zusammenkommt wird ich die auch bin das Packard integrieren regelmässig. Ist für anfänger mit Sicherheit leichter in der textliste dann laufende und erprobte teilproblemlösungen zu finden.

Black
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

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV -- ScriptEditor - Code-Vervollständigung - Sammlung von Script-Codes

Beitrag von nimmnenkeks » 08.11.2020, 17:54

Hier ein Beispiel für den Eintrag in die Datei "autocomplete.sdv4"

Datenpunkt bei IP-Aktoren setzen, welche den DP "COMBINED_PARAMETER" in den Kanälen haben.
Setzt man diese per Skript, dann sind auch Werte nutzbar (b.B. Helligkeit), welche nicht in 10% Schritten wie in UI auswählbar möglich.
Eine eigene Werteingabe haben die Coneheads wal wieder weggelassen.

JEDER IP-Aktor hat eine eigene Kombination von Werten, die eingehalten werden müssen (passiert in UI allein).
Bei der Nutzung via Codeschnipsel muss das natürlich beachtet werden :!:

Die genutzten Parameter sind in dem Code ebenfalls als Hilfetext eingefügt.
Diese können ja nach "Verinnerlichung" aus der "autocomplete.sdv4" entfern, bzw. brauchen gar nicht erst eingepflegt werden


HmIP-BDT

Code: Alles auswählen

cParameter_BDT
=!- HmIP-BDT mit DP "COMBINED_PARAMETER" per Skript setzen
=
=!- L=  Helligkeit
=!- OT= Einschaltdauer in Sekunden
=!- RT= Rampenzeit in Sekunden
=
=!- WICHTIG --         Eingabe der Werte bei Dimmer IMMER komplett mit folgender Reihenfolge)
=!- L=100,OT=0,RT=0 -- setzt Dimmwert dauerhaft, ohne Rampenzeit auf 100%
=
=object oChan= channels.Get ("Kanalname mit Datenpunkt");
=object oDp= oChan.DPByHssDP("COMBINED_PARAMETER");
=oDp.State("L=0,OT=0,RT=0");
Nachtrag:
Der "COMBINED_PARAMETER" des HmIP-BDT kann bei Bedarf auch mit einerm Delay übergeben werden (Danke an @Baxxy im Fred viewtopic.php?f=31&t=57290&hilit=combin ... 10#p611691 ).

Beispiel:

Code: Alles auswählen

oDp.State("L=0,OT=0,RT=0,Delay in Millisekunden");
Somit müsste die Vorlage in der "autocomplete.sdv4" auf

Code: Alles auswählen

cParameter_BDT
=!- HmIP-BDT mit DP "COMBINED_PARAMETER" per Skript setzen
=
=!- L=  Helligkeit
=!- OT= Einschaltdauer in Sekunden
=!- RT= Rampenzeit in Sekunden
=
=!- WICHTIG --         Eingabe der Werte bei Dimmer IMMER komplett mit folgender Reihenfolge)
=!- L=100,OT=0,RT=0 -- setzt Dimmwert dauerhaft, ohne Rampenzeit auf 100%
=
=object oChan= channels.Get ("Kanalname mit Datenpunkt");
=object oDp= oChan.DPByHssDP("COMBINED_PARAMETER");
=oDp.State("L=0,OT=0,RT=0,Delay in Millisekunden");
geändert werden, oder man legt sich eine zusätzliche Vorlage (z.B. cParameter_BDT_Delay) an.

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“