Problem bei Schreiben einer Variable KNX

Hallo!

es mag ein Anfängerfehler sein, aber ich verzweifle gerade beim Schreiben eines Sollwertes für einen RTR in KNX.
Ich denke meine Einstellung sind gemäß Doku richtig:



Und trotzdem kommt immer der Fehler das Variable read-only ist:
image

Was mache ich falsch?

Hallo, ich denke wenm du etwas schreiben willst musst du den Senden button aktivieren. Es kommt zwar dann eine Fehlermeldung das senden und empfangen nicht gleichzeitig usw. Aber so mache ich es bisher und es funktioniert.

Gruss Marcus

Hallo Marcus,

habe ich versucht. Ich bekomme eine Fehlermeldung bei der Änderung und ein Schreiben der Variable geht weiterhin nicht.

Gruß Bernd

Wie versuchst du denn den Wert zu schreiben? Du hast da ein eigenes Aktionsskript hinterlegt.
Kann es sein, dass du ein SetValue auf die Statusvariable machst? Das geht nicht.

Ich hatte - wie in der Beschreibung - ein Aktionsskript automatisch erstellt (nur Schreiben des Wertes)

Das geht nicht, da die Variable keine Standardaktion hat.
Du müsstest dann in deinem Aktionsskript die entsprechende Instanzfunktion aufrufen. Ein direktes Setzen des Wertes mittels SetValue ist nicht möglich.

Ich würde die auch empfehlen die passende DPT-Instanz statt der Legacy (EIS) zu nutzen. Die hat dann auch eine Standardaktion und du kannst dir das alles sparen.

Danke !
Könntest Du mir noch einen Tipp geben wie ich auf die DPT Instanz umstelle?
Die Zuordnung (EIS) kam automatisch aus dem ETS Import.
Und in der Auswahl haben ich jetzt nur die verschiedenen EIS-Werte

Einfach eine neue Instanz erstellen und nach dem passenden DPT-Wert deiner GA in der ETS suchen.
Alternativ die GAs aus der ETS exportieren (nicht OPC-Export) und in den KNX-Konfigurator laden und darüber dann die Instanz erstellen.

Danke das hilft. Habe es jetzt als DPT 9001 erstellt.

Das ist nicht richtig! Wie im Dialog bereits geschrieben, muss „Senden“ nur aktiviert werden, wenn die IP-Symcon Instanz eine Leseanfrage auf den Bus beantworten soll. Hier kann auch schnell Chaos entstehen, wenn man diese Einstellungen unbedacht verändert oder anpasst. Daher auch der Hinweis, dass diese Optionen normalerweise nicht angepasst werden müssen.

Am besten die aktuelle Variante wählen, also Gruppenadressen komplett als XML exportieren und dann in IP-Symcon importierten. Dann hat man die aktuellen DPT Instanzen anstatt der veralteten EIS Instanzen.

Hallo zusammen,
ich muss das Thema erneut aufrollen.
Habe mit > 100 Variablen das gleiche Problem. Aktuell habe ich nur bool’sche Variablen probiert.
Wenn ich den Zustand True/False z.B. über IPS-View ändere ist das kein Problem und das wird ausgeführt, wenn ich die Änderung mittels Skript durchführen möchte bekomme ich den Fehler: Warning: Variable is marked as read-only and cannot be changed in /var/lib/symcon/scripts/10014.ips.php on line 4

Gleiches Probelm ist auch, wenn ich eine neue Instanz mit Variable erstelle mit DPT001.x - 1 Bit.

Hier das Skript:

<?php if ((GetValueBoolean(38570) == false) and (GetValueBoolean(25105) == true)) { SetValueBoolean(41897, false); SetValueBoolean(41796, false); }

RequestAction(41897, false); … ist hier der richtige Ansatz.
Oder du schreibst mit KNX_WriteDPT… direkt auf die Instanz.

Steht doch in deinem Fehler …

Variable is marked as read-only and cannot be changed

Grüße,
Doc

Moin Doc und Danke für Deine Tipps,
Der Fehler „Variable is marked as read-only and cannot be changed“ tritt aber nur auf, wenn ich eine Änderung des Werts über ein Skript ausführen möchte. In z.B. IPSView funktioniert die Wertänderung, also das schreiben der Variable, einwandfrei. Also irgendwas muss beim Skript anders sein, als bei der Ausführung in IPSView.
RequestAction(41897, false); habe ich auch ausprobiert. Das erzeugt den Fehler „Warning: No valid action available in …“
Sodann habe ich Deinen Tipp versucht direkt auf die Instanz zu schreiben: EIB_Switch(32923, false); hat funktioniert.
Ist aber irgendwie schon doof.
Sowohl SetValue als auch RequestAction müssten aus meiner Sicht genauso funktionieren, eben halt nur auf Variablenebene.

IPSView wird vermutlich auch nur ein RequestAction auf die Variable machen und nicht die Variable direkt beschreiben.

RequestAction muss bei dir aber auch funktionieren, verm. hast du beim Testen etwas anderes an der Variablen eingestellt.
Ist in der Variablen denn noch „Benutze StandardAktion“ ausgewählt oder hast du da schon eine andere Aktion hinterlegt?

Hast du deine KNX Instanzen denn eigentlich schon im DPT Format oder im noch im EIS Format hinterlegt, das du mit noch mit EIB_Switch … arbeitest?

VG,
Doc

Hallo Doc,
danke für den Tipp. Bei einer der Variablen war, warum auch immer, „Benutze Standardaktion“ ausgeschaltet.
Nun funktioniert auch das „RequestAction“.
Und ja, ich habe noch das alte EIS-Format. Hat bis jetzt funktioniert, und ich hatte bis jetzt noch keine Nachteile. Man muss sich ja nicht noch mehr Arbeit als nötig schaffen. Und mal sehen, wenn ich zur ETS 6 wechsel, vielleicht dann damit zusammen…

Nein, das darf auch nie mit SetValue funktionieren.
Variablen bilden einen IST Zustand ab, somit darfst du nicht einfach die ‚Anzeige‘ ändern.
Sondern musst es der Hardware sagen. Das erfolgt dann mit einer Aktion.
Siehe auch Grundlagen:

Michael

Oh, alles klar, Michael, leuchtet mir ein. Habe ich verstanden. Danke Dir.

Was ich nicht verstehe: Wieso klappt IPS-View, wenn RequestAction nicht klappt?

Ich denke, Andreas wird ich auch nur ein RequestAction auf Variablen in IPS machen.
Warum sollte er dafür etwas neues erfinden … :wink:
Das würde ja dann erklären, warum es aus IPSView funktioniert.

VG,
Doc