NEWS
Objekt-ID zusammensetzen
-
Zur Überwachung meiner Fenster würde ich gerne ein Programm schreiben und die betroffenen Datenpunkte durch eine Variable ansteuern, sodass ich am Anfang nur den Fensternamen austauschen muss.
Hier mein Versuch.
Der deaktivierte Block wäre der direkte Datenpunkt mit dem das Programm auch funktioniert.
Die zusammengesetzte Version läuft nicht. -
@triplex Im Block wird ja der Name angezeigt (und nicht die ID). Wie genau lautet denn die Objekt ID?
-
@haus-automatisierung Ich vermute mal du meinst den Datenpunkt.
Sehe gerade, dass ich das 0_userdata.0..... nicht mit übernommen habe.
Muss ich die "_" auchso mit übernehmen? -
@triplex sagte: am Anfang nur den Fensternamen austauschen muss.
Enthält die Datenpunkt-ID nicht den Fensternamen? Oder der Datenpunktname? Dann könnte man auch den Selektor verwenden und muss nicht für jedes Fenster ein neues Skript erzeugen.
Wie @haus-automatisierung schon schrieb:Fenster - Status Alarm Farbe
enthält keine gültige ID. -
@triplex Genau. Das ist die ID. Und die muss auch so zusammengebaut werden. Grundlagen anschauen
-
@haus-automatisierung Jetzt läuft es.
Wenn ich mir jetzt noch automatisch die Datenpunkte erstellen möchte, dann kann ich das mit diesem Block machen und die Variable einfach einsetzen?
Wie ist das wenn ein Datenpunkt schon existiert?
Muss ich das vorher abfragen oder passiert dann einfach nichts?EDIT: Seh gerade, dass das der falsche Block wäre, aber welchen kann man dann nehmen?
-
@triplex sagte: falsche Block wäre, aber welchen kann man dann nehmen?
Blockly bietet keinen Block zum Erstellen eines Datenpunktes mit variabler ID.
-
@paul53 sagte in Objekt-ID zusammensetzen:
Blockly bietet keinen Block zum Erstellen eines Datenpunktes mit variabler ID.
Gibt glaube ich schon einen GitHub Issue mit diesem Wunsch. Kam zumindest schon öfter auf das Thema.
-
@paul53 sagte: Dann könnte man auch den Selektor verwenden und muss nicht für jedes Fenster ein neues Skript erzeugen.
Das könnte so aussehen:
-
@paul53 Danke für den Tipp.
Bin noch nicht so der Experte, habe aber glaube ich verstanden wie das Programm abläuft.
Werde es mal versuchen so umzusetzen.
An das Erstellen der Datenpunkte komme ich dann wohl nicht vorbei. -
@triplex sagte: An das Erstellen der Datenpunkte komme ich dann wohl nicht vorbei.
Man könnte es auch mit einer Javascript-Funktion, was für dich sicherlich nicht einfacher ist.
-
@triplex sagte: Danke für den Tipp.
Man kann auch Anfang und Ende in der ID ersetzen:
-
@triplex sagte in Objekt-ID zusammensetzen:
Wenn ich mir jetzt noch automatisch die Datenpunkte erstellen möchte, dann kann ich das mit diesem Block machen und die Variable einfach einsetzen?
Da habe ich mir selbst eine Blockly-Funktion für gebaut:
https://forum.iobroker.net/topic/76518/blockly-createmystate-datenpunkte-mit-unit-states?_=1735509779356man beachte die ganzen Beispiele!
In der aktuellen Version V5 kann man weglassen was man nicht braucht, wenn es nicht geht (unmögliche Kombination) steht im Log eine Fehlermeldung -
@bananajoe Danke Dir!
Genau das habe ich gesucht.
Du ersparst mir gerade ne Menge Arbeit bei 20 Türen & Fenstern mit je 3-5 Datenpunkten.Ein Frage hätte ich noch.
Was passiert wenn man versucht einen Datenpunkt anzulegen, den es bereits gibt?
Wird das dann ignoriert oder der bestehende überschrieben? -
@triplex sagte: der bestehende überschrieben?
Nein.
-
@bananajoe Kurzes Feedback!
Deine Funktion läuft spitze...da macht das Erstellen der Datenpunkte doch gleich wieder Spaß.EDIT:
Eine Kleinigkeit ist mir gerade noch aufgefallen.
Wenn ich den Datenpunkt manuell anlege und im Namen ein Leerzeichen drin habe, dann wird das auch im Namen so übernommen, im Datenpunkt wird dann ein "" eingesetzt.
Wenn ich mit deiner Funktion Leerzeichen habe, dann heißt auch der Datenpunkt so.
Ich weiß nicht ob das irgendwelche Auswirkungen hat.
Wäre es möglich die Funktion zu erweitern, dass Leerzeichen im Namen durch "" im Datenpunkt ersetzt werden? -
@paul53 Habe dein Programm so umgesetzt und es funktioniert auch soweit und dank @BananaJoe kann ich mir jetzt auch die ganzen Datenpunkt schnell und einfach erstellen.
Jetzt würde ich gerne überprüfen, wenn ich z.B. die Alarmanlage aktiviere, welche von den ganzen Fenstern evtl. noch geöffnet sind und einen zu dem jeweiligen Fenster zugehörigen Datenpunkt auf "true" setzen.
-
@triplex Weis du, ich bin jetzt seit etwa 1989 in der IT, habe also nun über 35 Jahre "Berufserfahrung".
Und immer noch fehlt mir völlig die Fantasie um überhaupt auf die Idee zu kommen, bei so etwas Leerzeichen oder Sonderzeichen einzusetzen.
Wenn ich da etwas anderes einsetze statt dem Leerzeichen, dann wird doch danach dein Programm scheitern weil der Name nicht so ist wie gedacht.
Was genau meinst du mit""
?
Ah, du meinst den_
Aber wie geschrieben, wenn ich das automatisch ändere passt es ja für den Rest nicht.
Ich könnte das Erstellen mit Fehlermeldung verweigern wenn da ein Leezeichen drin ist. -
@triplex sagte: überprüfen, wenn ich z.B. die Alarmanlage aktiviere, welche von den ganzen Fenstern evtl. noch geöffnet sind
Dazu gibt es im Forum etliche Lösungen. Etwa solche: