Organisieren von Programme/Variablen in der CCU

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von firefox_i » 17.01.2019, 08:11

dtp hat geschrieben:
13.01.2019, 15:42

Exakt. Mit das Schlimmste, was man seiner CCU antun kann. Es sei denn, @jmaus bzw. eQ-3 haben das in einer der neueren Firmware-Versionen integriert.

Wenn man schon mit Prefixen arbeitet, dann keine Zahlen verwenden, sondern Buchstaben à la aa, bb, cc oder dergleichen.
Hallo zusammen,
zu welchen Problemen kann das führen?

Ich habe z,B. bei mir in den Programmnamen führend 3 Ziffern um sie zu gruppieren.

In Gerätenamen verwende ich auch Unterstriche und Punkte um die Namen lesbarer und logischer zu machen.
Auch da habe ich jetzt hier gelesen, dass es Probleme mit Sonderzeichen geben kann.

Ist das jetzt nachteilig und kann zu Problemen führen (und wenn ja, was ist da bekannt?)

Danke und Gruß
Sven
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

dtp
Beiträge: 10657
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von dtp » 17.01.2019, 08:20

Also bei vorangestellten Ziffern in Namen gab es wohl regelmäßig Hänger und Abstürze der ReGaHSS. Wie gesagt, ich weiß nicht, ob das immer noch ein Problem ist. Ich arbeite nicht mit dieser Logik, da sich mir da bei hundert Programmen, Systemvariablen und ebenso vielen HM-Geräten keinerlei Vorteil erschließt. Im Gegenteil.

Sonderzeichen, Umlaute und Leerschritte verwende ich auch seit Anbeginn in den WebUI-Namen. Damit hatte ich noch nie Probleme.

Ein Beispiel: ein Dimmer im Schrank zwischen Küche und Wohnzimmer heißt "EG Wohnzimmer/Küche Dimmer Wandschrank". Intern kann die CCU damit problemlos umgehen. Es könnte aber Addons geben, die damit Schwierigkeiten haben. Aber ich verwende bei mir lediglich das CUxD- und das Programmedrucken-Addon, und die haben beide keinerlei Probleme damit.
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.

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von firefox_i » 17.01.2019, 08:28

Hallo dtp,
danke für die schnelle Info.

Das mit den Ziffern okay, wenn es da in der Vergangenheit Probleme gab ist das schnell umgestellt bei mir.

Sonderzeichen in Gerätenamen....
Da ist man sich ja glaub auch hier im Forum etwas uneins, ab wann ein Zeichen ein Sonderzeichen ist.
Laut ISO (ja da gibt es echt eine dafür) ist ein Sonderzeichen alles was kein Buchstabe aus der Menge [a..z, A..Z] oder keine Ziffer ist.
Selbst Umlaute gehören zu den Sonderzeichen.
Aber eben auch Unterstriche..und wenn ich dann lese, dass man keine Sonderzeichen verwenden soll und Leerzeichen besser gegen Unterstriche austauschen soll bekomm ich nen RuntimeError im Hirn ;-)

Also ich lass die Namen meiner Geräte mal so wie sie aktuell sind.

S.

PS:
Kann es sein dass du aus der Stuttgarter Umgebung kommst ?
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

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

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von alchy » 22.01.2019, 12:34

Vor der Verwendung von führenden Ziffern im Namen wurde früher gewarnt da das unter Umständen dazu geführt hat, das eine führende Zahl als ISE_ID interpretiert wurde.

Auch jetzt noch kann es zu Problemen führen, aber meines Erachtens ist das früher noch schlimmer gewesen da schon eine führende Zahl eventuell falsch interpretiert wurde.

Wie ist es denn jetzt? Nehmen wir mal ein kleines Beispiel:
  • du legst eine Gewerk mit dem Namen 950 an.
  • In einem Script versuchst du jetzt auch das Gewerk zuzugreifen

    Code: Alles auswählen

    object test1 = dom.GetObject("950");
    WriteLine(test1.Name());
    
  • In 79% der Fälle wird auf jeder CCU dann "Anwesenheit" ausgegeben.

Dann gäbe es noch 10% welche bei denen "CCU im Reboot" oder irgendetwas ausgegeben wird, was auf die Verwendung der Systemvariablen als Boottrigger deutet, bei anderen wird vielleicht auch "${sysVarPresence}" ausgegeben, die sind dann von einem anderen immer noch vorhandenen Bug betroffen.

Allen gemeinsam: es wird aber nicht "950" ausgegeben, denn das wäre ja der Name des gerade angelegten Gewerkes. :shock:
(Bewusst habe ich 1% offen gelassen, weil es theoretisch vielleicht sein kann, das bei jemanden das Gewerk 950 eine ISE_ID < 950 verwendet wird, obwohl das glaube verhindert wird.) die würden dann aber etwas ganz anderes ausgegeben bekommen, wie man vielleicht erwartet:

Wir haben ja alle durch BadenPower vor Augen gehalten bekommen, das es sicherer ist auf ein Gewerk zuzugreifen in dem man
eben nicht dom.GetObject(); benutzt sondern ein Vorselektierung wie für das gerade angelegte Beispielgewerk

Code: Alles auswählen

object test2 = (dom.GetObject(ID_FUNCTIONS)).Get("950");
WriteLine(test2);
die Ausgabe ist aber auch hier nicht "950" wie für andere Gewerke gelten würde, sondern null :shock:


Dann könnte man noch weiter testen.
  • Man benennt das Gewerk 950 um in einen Namen wie z.B. Testgewerk.
  • Man denkt sich, nehmen wir einen Favoriten -
  • also flugs einen Favoriten angelegt mit Namen 950 - upps geht nicht, da wird 950 1 draus.
    Wieso, hat EQ-3 endlich mal auf meine Dauermeldung gehört, das Kein Objekt so heissen darf wie ein anderes und das nun auch Gruppenübergreifend implimentiert ohne es zu vermelden? Aber das Gewerk 950 gab es ja auch nicht mehr. :shock:
  • Mhh, beiseite geschoben und Merker gesetzt.
  • Sei es drum - nehmen wir einen anderen Namen. Neuen Favoriten angelegt mit Namen 41
  • bekanntes Script:

    Code: Alles auswählen

    object test1 = dom.GetObject("41");
    WriteLine(test1.Name());
Verdammt, (der kennende Mitleser wird es erwarten) da wird Servicemeldungen ausgegeben statt der erwarteten "41" für den Namen des angelegten Favoriten.
Und wieder gilt die prozentuale Verteilung wie oben, spar ich mir. :mrgreen:

Also auch wieder den sichereren Zugriff mittels:

Code: Alles auswählen

object test3 = (dom.GetObject(ID_FAVORITES)).Get("41"); 
WriteLine(test3);
und wieder null. :shock:

Also den Test erstmal beenden, Favoriten wieder umbenennen in Testfavorit.
Zahlen_Favorit.jpg
Zum Check noch mal schnell nachgeschaut:

Code: Alles auswählen

WriteLine(dom.GetObject(ID_FAVORITES).EnumUsedNames());
Ausgabe:

950
950 1

_USER1004
_USER1238
_USER41587
Alle
Heizungen Lichter
PC
PDA
Security
Testfavorit
Zentrale

Ohje, wo kommen denn die jetzt her.
Schon wieder irgendwelche Geisterobjekte. :twisted:

Du siehst, es ist immer noch ratsam Zahlen nicht zu verwenden für Namen.
Zahlen als Präfix vor Namen will ich nicht mehr probieren, denke aber das war gefixt.
Vor Umlauten äöüß....kann man ebenfalls nur warnen. Leerstellen, noch nie ein Problem ....

Allgemein gilt, verwendet man keine Scripte ist es auch noch relativ egal ob man Umlaute verwendet. Intern arbeitet die CCU mit den ISE_IDs von Objekten, also soweit erst mal nicht so schlimm. Aber auch die internen Scripte sind nicht fehlerfrei. :wink:
Benutzt man Apps, Tools wie den Scriptexecuter oder ähnliches, welche andere Codierungen benutzen, dann geht das Problem schon los.

Meine Meinung, vermeidet solche Sachen, es sei denn ihr seit euch sicher was ihr tut.

Und ich darf jetzt forschen warum meine Favoriten um Geisterobjekte bereichert wurden.

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.

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von Bratmaxe » 22.01.2019, 12:57

Das nenne ich mal wieder ne ausführliche Antwort, die keine Fragen offen lässt. :!:

Top Alchy!
Gruß Carsten

dtp
Beiträge: 10657
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von dtp » 22.01.2019, 13:59

alchy hat geschrieben:
22.01.2019, 12:34
Allgemein gilt, verwendet man keine Scripte ist es auch noch relativ egal ob man Umlaute verwendet.
Also bisher kommen sämtliche Skripte, die ich geschrieben habe - und das sind schon ein paar - problemlos mit Umlauten in Klarnamen zurecht. Was ich jedoch vermeide, ist die Verwendung von Umlauten in lokalen Skriptvariablennamen. Aber da bevorzuge ich eh englische Begriffe.

Ich persönlich möchte einfach als Deutsch Sprechender, dass ein Gerätename mit Umlauten dargestellt wird, wenn ihn mir die CCU meldet. Ich finde es absolut unschön, wenn ich z.B. "Kueche" statt "Küche" lesen muss.

Und wenn ich meinen Kindern sage, sie sollen beim nächsten Diktat Umlaute durch die entsprechenden Digraphen ersetzen, dann wird ihnen dafür bestimmt jeweils ein Rechtschreibfehler angekreidet. ;)
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.

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

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von Black » 22.01.2019, 14:08

da gebe ich dir recht, aber aus eigener Erfahrung (ich hab selber auch ein Prog geschrieben, was sich in die rega einklingt) wirds dann wenig lustig, wenn externe Anwendungen zum Zuge kommen, wenn man an der Kodierung von derartigen Zeichen graue haare bekommt.

In dem Zusammenhang sei IOBroker und Konsorten genannt.

Nur auf der CCU beschränkt würde ich dir recht geben.

Bei mir sind Programme nach quasi Gewerk benannt, gefolt von Ordnungsnummer unf Kurzbeschreibung:
Beispielsweise:
ROLLO_01_Masterwollwert
ROLLO_02_Wohnzimmer
LICHT_01_Irgendwas
etc

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

dtp
Beiträge: 10657
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von dtp » 22.01.2019, 14:13

Auch bei Verwendung des ioBroker oder von CUxD hatte ich noch nie Probleme mit Umlauten und anderen "normalen" Sonderzeichen in Klarnamen der CCU. Sämtliche bisher verwendeten Javaskripte des ioBroker kamen problemlos damit klar. Aber auch hier gilt für mich, dass ich innerhalb dieser Skripte nur auf den international verwendbaren Buchstaben- und Zahlenraum zurückgreife.

Wenn ich hier im Forum immer wieder lese, dass die ReGaHSS abstürzt oder hängen bleibt, dann dürften Umlaute und Sonderzeichen (so sie nicht zu exotisch sind) in Gerätenamen den mit Abstand geringsten Anteil daran haben.
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.

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

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von alchy » 23.01.2019, 01:38

Bratmaxe hat geschrieben:
22.01.2019, 12:57
Das nenne ich mal wieder ne ausführliche Antwort, die keine Fragen offen lässt. :!:
Top Alchy!

Danke.
dtp hat geschrieben:
22.01.2019, 13:59
Also bisher kommen sämtliche Skripte, die ich geschrieben habe - und das sind schon ein paar - problemlos mit Umlauten in Klarnamen zurecht.
War ja klar. :roll:
Du hast ALLES gelesen und verstanden was ich geschrieben habe? Wieder mal nicht?
Auch deine Scripte kommen mitnichten damit klar, auch wenn du denkst, dass sie es wären.
Denn es geht nicht um die Scripte an sich. LESEN und VERSTEHEN. :wink:

Ein einfaches, bestimmt für fast jeden verständliches Beispiel zur Unterhaltung:

Nehmen wir mal jemand legt eine Systemvariable an mit Namen: TestmütÜmlätes
Umlaute_sysvar.jpg
Dann nimmt er ein einfaches und korrektes Script und versucht auf das Object zuzugreifen :

Code: Alles auswählen

object test = dom.GetObject(ID_SYSTEM_VARIABLES).Get("TestmütÜmlätes");
WriteLine(test.Name());
unter Script testen:

Ergebnis ist doch in Ordnung:
Umlaute_scripttesten.jpg
müßig zu sage, das z.B. auch BadenPowers genialer HM-Editor natürlich keine Probleme damit hat:
Umlaute_BP_HM-CodeEditor.jpg
Dann nimmt er mal ein anderes externes Tool wie z.B. den Script Executer (den ich ansonsten gern benutze)
Umlaute_scripteecuter.jpg
Und siehe da da stimmt doch was nicht. :shock:

Im Fehlerprotokoll dann auch:

Code: Alles auswählen

 local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: object test = dom.GetObject(ID_SYSTEM_VARIABLES).Get("TestmütÜmlätes"); WriteLine(test.Name()); [iseESPexec.cpp:12649]
Wahrscheinlich kommt dann wieder, den benutze ich nicht. Und wer legt schon eine Systemvariable mit Namen TestmütÜmlätes an, kann man ja kaum aussprechen.
Und genau das ist dein Problem. Es geht nicht um dich oder mich, es geht um die User.
Denn vielleicht nutzt einer der User, welcher mit deinen so vielen Scripten arbeiten will z.B. den Executer. Denk mal drüber nach. :wink:
Muss jetzt eine Warnung raus vor dem Executer? Noch weitere Beispiele von externen Tools?
Kennst du alle, hast du sie alle getestet? Ich glaube da Black, wenn er auch schon mal Problem damit irgendwo hatte.
Ich habe dir bewiesen, das ein Tool ein Problem damit hat. Beweis du mir das alle anderen Tools & Apps kein Problem mit dem haben, bevor du Warnungen wieder in den Wind schreibst und selbst reinstolperst.
dtp hat geschrieben:
22.01.2019, 14:13
Wenn ich hier im Forum immer wieder lese, dass die ReGaHSS abstürzt oder hängen bleibt, dann dürften Umlaute und Sonderzeichen (so sie nicht zu exotisch sind) in Gerätenamen den mit Abstand geringsten Anteil daran haben.
Wieso denn Absturz der RegaHss?
Nicht allzu exotische Sonderzeichen sind also in Ordnung? Wo finden wir denn die Definition davon? Dann teste ich die mal bei Gelegenheit. :mrgreen:

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.

dtp
Beiträge: 10657
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Organisieren von Programme/Variablen in der CCU

Beitrag von dtp » 23.01.2019, 07:31

Den Script Executor benutze ich nicht. 8)

Alles weitere erspare ich dir, mir und der restlichen Community. :roll:

Es steht dir und den anderen Moderatoren natürlich frei, meine Skripte und Beiträge zu löschen. Ich dachte lediglich, dass sie dem einem oder anderen vielleicht helfen könnten. Wenn das nicht so gesehen wird, dann kann ich den Aufwand auch sehr gerne bleiben lassen. Habe kein Problem damit.
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 allgemein“