SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

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

Moderator: Co-Administratoren

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

SDV V4.05.01 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 16.10.2020, 14:12

Die nächste Version wirft ihre Schatten voraus, bevor diese nun wahrscheinlich dieses WE oder Anfang der nächsten Woche zuerstmal in den inneren Testerkreis geht.

Es hat sich so einiges getan.

Es gibt ein Branking-Change.
1.Mit dieser Version kann es technisch bedingt, nur noch 64bit Versionen geben. Grund ist, das ich für ein TypeCast im Highlighter eine 64Bit Struktur brauche.
2. Native Linux ist wieder in weite ferne gerückt, da ich einige neue Funktionen nun mit der Windows Bibliohek umgesetzt habe
3. Die String Syntax ist nun auch im Editor an die neue Aktuelle Rega nach den Raspberrrymatik Breakting changes angepasst. dies hat zu r folge, das bei älteren rega versionen der Editor noch soweit alles korrekt anzeigt, es sei denn es werden string escaping Funktionalitäten benutzt, das geht dann daneben.
es wäre zwar durch unterschiedliche classes händlebar, die dynamisch je nach erkannter rega erzeugt werden... theoretisch... ich habs mir jedenfalls geschenkt.
------------------------------------------------------------------------------------------------------------

Was wird neu sein:
1. Hilfen, die bisher rudimentär hardcoded in verschiedenen Funktionen lagen, laufen nun zentralisiert aus einer , zwar auch hardcoded, aber In-Memory DatenBank. Dort sind nun alle Informationen, die sich auf diversen CollageBlöcken, Codeschnipseln etc befangen, nun gebündelt. Das war auch die Hauptarbeit der letzten zeit, diese Datenbank zu erzeugen. ALs Hint im Editor läaast sich nun Abrufen: was ist das ? namespace, methode, wozu und zu welchen objeckttypen gehört diese methode, wie ist die parametrierung und die Ergebnistypen (zumindest die mir bekannten), eine rudimentäre Kurzbesschreibung.
V45.png
V45.png (22.71 KiB) 434 mal betrachtet

2. Da eine Zentrale Datenbank existiert, ist die Codevervollständiger Funktion auch komplett neu aufgesetzt worden. es lässt sich nun Feingradual die methoden z.b. zu variablen bzw Objekttypen, zu Namensräumen vorschlagen, sowie fie einzelnen Konstanten auch in fein funktionaler unterteilung
V451.png
Wenn der Datenbestand einmal steht, ist das eientlich nur aus ausformulieren des passenden queries.

3. Die Vervollständiger Funktion noch weiter dahingehend verfeinert, dass (optional anwählbar) bei drücken des Punktes "." vom SDV erkannt und unterschieden wird: ich habe einen Namensraum, als werden automatisch nur die Methoden des passenden namensraumes vorgeschlagen, ich habe eine Variable eines bestimmten Types, also werden nur die passenden methoden vorgeschlafen etc. Dabei wird natürlich erkannt, ob es ein gültiger Methodenaufruf ist, innerhalb eines String oder eines Komemntars erfolgt natürlich kein Vorschlag.

4. Der Highlighter wurde wesentlich weiter verfeinert und erweitert:
V452.png
des dient weniger dazu, Bunte textorgien zu erzeugem, sondern einen Scripttext schon mal den passenden syntaktisch bzw semantischen Elementen zuzuordnen. der Highlighter hat auch eine optionale Fehler bzw Warnstufe und prüft auf:
verwendung der richtigen methode an Namenraum,Variablentyp etc... erkennen nicht deklarierter variablen, analysieren nach art der Deklarierungen und Verwendungen, Überprüfung des Klammerstacks ( {} konnten den Scriptparser ja gerne zur verzweiflung bringen), dabei wird der () Stack und der {} separat geprüft. korrekte verwendung von schleifenabbrüchen. Berücksichtigung der bösartigen besonderheiten des Regaparsers (er mag zum beispiel kein Kommentar vor einem else oder elseif)
V453.png
V453.png (21.67 KiB) 434 mal betrachtet
Der Highlighter wurde dabei aufgeteilt wie es die grossen Editoren , auch der Freepascal Editor, ebenso machen in die reine Anzeige (echtzeit) und in den Analysator, der als Hintergrundtask läuft und eine Volltextanalyse des Scrites macht, Variablen findet und Analysiert und ein Auge uuf den Klammerstack und sonstige Syntaktische fallen hat.

5. Alle Fixes bis einschliesslich des 4.02.07I sind ebenfalls eingearbeitet, zusätzlich ermittelt ebi CCU Konsistenztest nun der SDV zuerst die höchste verwendetet IseID in der regadom und scannt innerhalb dieses Bereiches.

6. Auto-Completion ermöglicht nun, auch "grössere Codefetzen" unter einem Suchbegriff zu schreiben und jederzeit im Editor auf abruf zu haben. Der alte menüpunkt methodenhilfe ist deshalb verschwunden und ging in diesem neuen Punkt auf.
V454.png
aufgerufen wird dies entweder durch shift-ctrl space oder durch den Menü Punkt im Code.vervollständiger
V455.png
V455.png (7.44 KiB) 434 mal betrachtet
die sysvars hier erzeugen code um eine systemvariable selber anzulegen, dies war bis dahin hardcoded unter rmenühilfe. dies hier kann individuell dann erweitert werden.

7. Um mir das Programmieren etwas zu erlecihtern habe ich damit begonnen, die Möglichkeiten des automatisierten Laden und Speichern von Sessionproperties zu nutzen. Das führt dazu, das einige Zteile schon in eine XML datei gewandert sind. Hier müssen eventuell einige EInsellungen (Vor allem der Highlighter) erneut gemacht werden.

8. Ausblick
was geht und vllt noch kommen wird: da die Datenbank eh da ist, vllt noch eine Scriptdoku, die sich nach auswahl aus dem Binärbaum (name, methode, objektzugehörigkeit, vererbung der Objekte) automatisiert filtern und erzeugen lässt.
Semantische Prüfung der Parameter (die Datenbank kennt ja die möglichen paramtrierungen)
mal gucken...

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.01.08B Scripteditor und Objektinspektor

technical contribution against annoying advertising

MichaelN
Beiträge: 1129
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 80 Mal
Danksagung erhalten: 105 Mal

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von MichaelN » 16.10.2020, 14:28

Das hört sich sehr gut an, ich bin schon gespannt.

Benutzeravatar
jmaus
Beiträge: 6261
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 39 Mal
Danksagung erhalten: 402 Mal
Kontaktdaten:

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von jmaus » 16.10.2020, 15:06

Black hat geschrieben:
11.10.2020, 09:56
65534 ist gefährlich... in grossen IP Systemen mit vielen und umfangreichen WEBUI programmen knackt man die grenze.... selber schon gesehen.

ich check grade mal eine version für 4 ab, also ermitteln der höchsten ID, die in der rega vorkommt, und dies ist der max scanbereich.
Ich hab jetzt nicht komplett mitgelesen, aber wie du vorher schon geschrieben hattest gibt es schon seit vielen ReGa Versionen die 16bit (65536, also von 0 - 65535) grenze bei ISE ids nicht mehr. Ich habe die auf 2^32 hochgesetzt, also auf einen Wert den wir voraussichtlich in unserer Lebenszeit nicht mehr mit der ReGa erreichen werden. Die einzige Besonderheit die man hierbei beachten bzw. im Hinterkopf haben muss ist, das ISEID_ERR weiterhin auf "65535" zeigt. D.h. es wird niemals eine ISE id 65535 von der rega vergeben und kann auch in der regadom folglich normal nicht vorkommen, denn diese entspricht ISEID_ERR und ist damit ausserhalb des erlaubten ISE ID Bereiches ist also eine reservierte Nummer. Der Bereich von erlaubten bzw. automatisch von ReGa vergebenen ISEIDs ist also von 0 bis 65534 und dann von 65536 bis 2^32.
RaspberryMatic 3.53.30.20200919 @ ESXi, ~190 Hm-RF/HmIP-RF/HmIPW Geräte, ioBroker – RaspberryMatic GitHub Projekt / Twitter

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

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 16.10.2020, 15:31

@jens. Die ID_ERROR berücksichtigt der SDV schon korrekt. Aber sag mal, welche kurze und prägnante Methode gibt es, der Rega die höchste vergebene IseID zu entlocken?

Thnx Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.01.08B Scripteditor und Objektinspektor

technical contribution against annoying advertising

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

SDV V4.05.01A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 17.10.2020, 21:51

So, für den inneren Kreis liegt nun die erste Alpha auf meinem FTP.

Das Testpackage enthält zusätzlich zu der EXE eine sdv4.xml und eine autocomplete.sdv4 datei, die auch in das verzeichnis entpackt werden müssen. Rückmeldungen, wo etwas klemmt wie immer gerne gesehen.

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.01.08B Scripteditor und Objektinspektor

technical contribution against annoying advertising

Benutzeravatar
jmaus
Beiträge: 6261
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 39 Mal
Danksagung erhalten: 402 Mal
Kontaktdaten:

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von jmaus » 17.10.2020, 22:22

Black hat geschrieben:
16.10.2020, 15:31
@jens. Die ID_ERROR berücksichtigt der SDV schon korrekt. Aber sag mal, welche kurze und prägnante Methode gibt es, der Rega die höchste vergebene IseID zu entlocken?
Da gibt es meines Wissens keine im ReGaSkript verfügbare Methode. Aber warum brauchst du so etwas?
RaspberryMatic 3.53.30.20200919 @ ESXi, ~190 Hm-RF/HmIP-RF/HmIPW Geräte, ioBroker – RaspberryMatic GitHub Projekt / Twitter

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

SDV V4.05.01A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 17.10.2020, 22:28

jmaus hat geschrieben:
17.10.2020, 22:22
Black hat geschrieben:
16.10.2020, 15:31
@jens. Die ID_ERROR berücksichtigt der SDV schon korrekt. Aber sag mal, welche kurze und prägnante Methode gibt es, der Rega die höchste vergebene IseID zu entlocken?
Da gibt es meines Wissens keine im ReGaSkript verfügbare Methode. Aber warum brauchst du so etwas?
bei einem scan über die rega bei der suche nach vergeisterten Objecten oder sonstigen Leichen brauche ich das ... da muss ich ja eine obergrenze haben, zwischen der ich so alles an objecten scanne... und sinnlos als grenze 2 hoch 31 anzugeben ist ja nicht zielführend, un ddie 65534 können zu klein sein.

es geht jetzt über einen verherigen scan über die regadom... ist aber sinnlos zeitaufwending... wenn du da eine methode basteln könntest, wären einige da, nicht nur ich, mit sicherheit angetan, die Rega muss das ja wissen, wenn bei CreateObject eine neue Nummer angelegt werden muss.

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.01.08B Scripteditor und Objektinspektor

technical contribution against annoying advertising

Baxxy
Beiträge: 1774
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 158 Mal
Danksagung erhalten: 256 Mal

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Baxxy » 18.10.2020, 21:09

Ich habe heute mal ein bisschen mit der neuen Alpha gespielt...
Echt nicht schlecht was du da wieder so implementiert hast. Gefällt mir sehr gut auch wenn man sich erstmal neu einarbeiten muss.

Ein paar Kleinigkeiten...
Meinen "Lieblings-Logger" habe ich über "Einstellungen --> Setup TextComletion eingefügt...
(Hier muss man erstmal drauf kommen das per RechtsKlick gespeichert wird. :wink: )
Sieht nun so aus...

Code: Alles auswählen

Logger_System short0
=system.Exec ("logger -t LOGGERNAME -p user.debug [AUSGABETEXT]");

Logger_CUxD short1
=dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State();
Funktioniert aber nur über Umsch+Strg+Leer, nicht über den Shortcut (Umsch+Strg+F2) oder über das Code-Vervollständigen Menü.


Code-Vervollständigung --> Zeitformat:
Fügt den kompletten Text...

Code: Alles auswählen

Datum [DE DD.MM.YYYY]  (%d.%m.%Y)
statt nur das relevante...

Code: Alles auswählen

%d.%m.%Y
ein.

Nur am Rande... mit deinen ganzen Abkürzungen ala "ifeife" kam ich nicht klar. Alles in "leserlich" umbenannt, für dieses Beispiel also "if_elseif_else". :oops:

Und jetzt noch ein "Verbesserungsvorschlag":
Der Schnellzugriff auf die "Kategorien" (z.B. Strg+Alt+S für die SysVars) ist echt super praktisch.
Mir fehlt aber ein Zugriff auf die Datenpunkte, idealerweise unterteilt in BidCos, HmIP, CUxD etc. und noch besser über eine konfigurierbare Blacklist gefiltert (das so Sachen wie INSTALL_TEST gleich rausfallen).

Und ja, ich habe mich im SDV gefunden... Danke dafür. :D

Edit: Nochmal über den "Verbesserungsvorschlag" nachgedacht... So richtig Sinn macht das nicht. Wie wäre es stattdessen mit einer Kategorie "Channels"...
Grüße
Baxxy

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

SDV V4.05.01A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 18.10.2020, 21:38

Baxxy hat geschrieben:
18.10.2020, 21:09
Ich habe heute mal ein bisschen mit der neuen Alpha gespielt...
Echt nicht schlecht was du da wieder so implementiert hast. Gefällt mir sehr gut auch wenn man sich erstmal neu einarbeiten muss.
Danke dir, ich hatte mich etwas im code ausgetobt, ich denke, die Richtung in die es geht, ist erkennbar


Ein paar Kleinigkeiten...
Meinen "Lieblings-Logger" habe ich über "Einstellungen --> Setup TextComletion eingefügt...
(Hier muss man erstmal drauf kommen das per RechtsKlick gespeichert wird. :wink: )
Kurzanleitung dazu habe ich noch nicht ^^ kommt, wenn das Konzept dann letztlich stehen wird.
Edit2: Ctrl + S als zusätzliche Option zum Speichern ? Hilfreich ?


Sieht nun so aus...

Code: Alles auswählen

Logger_System short0
=system.Exec ("logger -t LOGGERNAME -p user.debug [AUSGABETEXT]");

Logger_CUxD short1
=dom.GetObject("CUxD.CUX2801001:1.SYSLOG").State();
Funktioniert aber nur über Umsch+Strg+Leer, nicht über den Shortcut (Umsch+Strg+F2) oder über das Code-Vervollständigen Menü.

Kannst du mit bitte das Autocomplete File von dir per PN schicken, damit ichs im Debugger testen kann
Edit2: Ich hab dein Autocomplete mal bei mir reingeladen... Dein FIle ist correkt, man sollte natürlich als Programmierer auch für die anderen Meüs das OnClick Event zuweisen... Arghhh.. Mit F1 wars gemacht, damit habs iauch getestet. Also auch fixxt. Aber ich hab noch nen Nummerndreher drin.. short 0 geht auf F1, short 1 auf F2... es sollte short1 auf f1 und short 0 auf f10 gehen. Zustimmung ? Eine Änderung der Shortcuts braucht aber einen Neustart des SDV (bis jetzt, weiss nicht ob ichs ohne hinbekomme) Fix auch nächste Version
Edit3: fixed, Nummernzuweisung wie in PN beschrieben korrigiert, Shortcut Zuweisung gehen nun ohne Neustart beim Abspeichern des Autocompletes


Code-Vervollständigung --> Zeitformat:
Fügt den kompletten Text...

Code: Alles auswählen

Datum [DE DD.MM.YYYY]  (%d.%m.%Y)
statt nur das relevante...

Code: Alles auswählen

%d.%m.%Y
ein.

thnx, war ein Bug, da hatte ich eine Zeile zum testen auskommentiert gehabt... ist behoben in der nächten Version

Nur am Rande... mit deinen ganzen Abkürzungen ala "ifeife" kam ich nicht klar. Alles in "leserlich" umbenannt, für dieses Beispiel also "if_elseif_else". :oops:

Und jetzt noch ein "Verbesserungsvorschlag":
Der Schnellzugriff auf die "Kategorien" (z.B. Strg+Alt+S für die SysVars) ist echt super praktisch.
Mir fehlt aber ein Zugriff auf die Datenpunkte, idealerweise unterteilt in BidCos, HmIP, CUxD etc. und noch besser über eine konfigurierbare Blacklist gefiltert (das so Sachen wie INSTALL_TEST gleich rausfallen).
Den Punkt nehme ich gerne auf... Den Gedanken hatte ich auch gehabt, aber bis jetzt keine sinnvolle Idee zur Umsetzung. Datenpunkte können ja schnell mal 4 stellig werden von der Anzahl hier. Wie soll man das sinnig vorfiltern ? Unterteilen in die Interfaces, ja, würde gehen... aber dann kommen immens viele Datenpunkte.. Und wie dann einfügen, ich bin ein Freund von Vollsymbolische Adressierung über channels.Get ("ChannelName").DPByHssDP ("DatenPuktname"); Damit das ganze Gerätetauschfest ist. Ich bin für Ideen da offen (Das was du meinst geht jetzt auch schon über den Inspektor, datenpunkt merkieren und übder Alt-O wird dir die richtige Syntax zu dem Datenpunkt im Edtitor eingefügt

Und ja, ich habe mich im SDV gefunden... Danke dafür. :D
Da hatten wir beide ja schon im Verfeld drüber gesprochen gehabt ^^

Edit: Nochmal über den "Verbesserungsvorschlag" nachgedacht... So richtig Sinn macht das nicht. Wie wäre es stattdessen mit einer Kategorie "Channels"...
Meinst du alle kanäle Gelistet in der completion-auswahl ?

Black
Zuletzt geändert von Black am 18.10.2020, 22:31, insgesamt 8-mal geändert.
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 4.01.08B Scripteditor und Objektinspektor

technical contribution against annoying advertising

Baxxy
Beiträge: 1774
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 158 Mal
Danksagung erhalten: 256 Mal

Re: SDV V4.02.07F Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Baxxy » 18.10.2020, 21:52

Black hat geschrieben:
18.10.2020, 21:38
ich bin ein Freund von Vollsymbolische Adressierung über channels.Get ("ChannelName").DPByHssDP ("DatenPuktname"); Damit das ganze Gerätetauschfest ist. Ich bin für Ideen da offen
Ja, genau so arbeite ich auch größtenteils. Und so in etwa schwebte mir das auch vor. Dachte mir dann aber das wird zu kompliziert, daher der unausgegorene Schnellschuss mit den Channels. Da wäre eine White statt Blacklist vielleicht besser wo man sagt... Nur Channels mit z.B. ACTUAL_TEMPERATURE werden als channels.Get ("ChannelName").DPByHssDP ("ACTUAL_Temperature") gelistet...

Muss noch drüber nachdenken. :wink:
Grüße
Baxxy

Antworten

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