Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auf Leseanfragen mit einem Wert aus ioBroker antworten. #132

Closed
recepogras opened this issue Dec 27, 2020 · 10 comments
Closed

Auf Leseanfragen mit einem Wert aus ioBroker antworten. #132

recepogras opened this issue Dec 27, 2020 · 10 comments

Comments

@recepogras
Copy link

recepogras commented Dec 27, 2020

Hallo Zusammen, hallo liebe(r) Entwickler.

Vielen dank für den Adapter. Diesen habe ich nun seit über einem Jahr in Einsatz und momentan auch die 1.0.42.

Da ich sonst keine Anlaufstelle kenne, versuche ich es hier. KNX ist mir geläufig und mit dem Adapter konnte ich mich anfreunden. Neue Objecte z.B. lege ich meist manuell an und nehme auch "raw" anpassungen vor.

Eine Sache habe ich bisher nicht geschafft, wobei ich nicht weiß ob das ggf. garnicht unterstütz wird.

Allgemein formuliert möchte ich gerne auf eine KNX-Leseanfrage aus ioBroker heraus antworten.

Beispiel:
Sturmmeldungen: Wetterdaten lese ich von öffentlichen Diensten aus. Konkret ist es eine Netatmo Station. Somit habe ich aktuelle Wetterdaten in ioBroker. Nach einem Smooth-Verfahren stelle ich fest, ob ein Sturm herrscht. Wenn ja, melde ich das an eine Gruppenadresse 0/4/10. Dazu gibt es die Statusadresse 0/4/12. Dies bewirkt Dinge wie das Hochfahren von Jalousien, direkt in KNX-Aktoren eingestellt.

Für den Fall eines ioBroker-Neustarts kann ich den Wert schon in und um ioBroker handhaben und rekonstuieren.

Meine KNX-Visu und SmartphoneApp fragen bei jedem Start mit einer Leseanfrage auf die Statusadresse den aktuellen Wert ab. Den weiß allerdings nur ioBroker. Wie Antworte ich auf solche eine Leseanfrage?

  • Funktioniert das Antworten auf eine Leseanfrage (kommend über den KNX-Bus) in einer bestimmten Lese/Schreibe Konstellation der Objekte automatisch? Wenn ja, wie und welche?
  • Muss ggf. eine weitere Intelligenz auf die Leseanfrage reagieren? Intelligenz bringe ich in das Ganze mit Node-Red. Allerdings sehe ich da keine Bewegung auf dem Objekt im Falle einer Leseanfrage. D.h. Konstrukte die ich baue, werden nicht angetriggert.

Andere ähnliche Fälle:

  • Nachtsignal (ioBroker gibt das Signal)
  • Schaltzustand von Objekten wie Wifi-LED-Controller, die über einen KNX-Taster per ioBroker geschaltet werden (Zustand auch hier nur im ioBroker bekannt bzw. abfragbar).

Momentaner Workaround: Ich benutze einnen freien Schaltaktorplatz, um mit dem Sturmsignal diesen zu Schalten und über die Statusadresse das ganze zurückzuspielen. Das funktioniert ziemlich zuverlässig, aber ob das Sinn der Sache ist...

Die beiden Objekte
Sturmalarm
{ "from": "system.adapter.knx.0", "user": "system.user.admin", "ts": 1589147866729, "common": { "name": "A_Z03_1 Sturmalarm", "type": "boolean", "role": "value", "write": true, "read": false, "min": true, "max": true }, "native": { "dpt": "DPT1.005", "address": "0/4/10", "addressRefId": "P-0145-0_GA-59", "statusGARefId": "P-0145-0_GA-999", "actGARefId": "" }, "acl": { "object": 1574, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1574 }, "_id": "knx.0.Neue_Hauptgruppe.Neue_Mittelgruppe.A_Z03_1_Sturmalarm", "type": "state" }

Sturmalarm Status
{ "from": "system.adapter.knx.0", "user": "system.user.admin", "ts": 1589147866729, "common": { "name": "A_Z03_1 Sturmalarm Status", "type": "boolean", "role": "value", "read": true, "write": false, "min": true, "max": true }, "native": { "dpt": "DPT1.005", "address": "0/4/12", "addressRefId": "P-0145-0_GA-999", "statusGARefId": "", "actGARefId": "" }, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "knx.0.Neue_Hauptgruppe.Neue_Mittelgruppe.A_Z03_1_Sturmalarm_Status", "type": "state" }

@chefkoch009
Copy link
Collaborator

Hallo,

Warum hat eine Wettermeldung eine Statusadresse? Man kann doch nicht Sturm an- oder ausschalten, so dass mir Sturm einen Status liefern müsste. ;-)

Mein Vorschlag wäre:
Du nutzt nur die Adresse 0/4/10. Dort schreibt deine irgendwie geartete Wetterstation ein "true" rein (z.B. via node-red, da gibt es ioBroker-in und ioBroker-out Objekte), wenn Windalarm ausgelöst ist. In der ETS verknüpfst Du dann die Alarmobjekte Deiner Jalousieaktoren mit dieser 0/4/10. Du musst jedoch auch sicherstellen, das seitens Deiner Wetterstation der Windalarm durch ein "false" auch wieder aufghoben wird.

Das Du im node-red nichts siehst, kann u.A. daran liegen, das im node-red-Konfigurationsdialog im ioBroker-Admin bei Dir der Haken gesetzt ist bei "ioBroker-Werte in String konvertieren". Dann fällt dein true als "true" im Eingangsobjekt ein.

@RESDE
Copy link

RESDE commented Feb 2, 2021

@recepogras
Konntest Du die Tipps von @chefkoch009 bereits umsetzen? Falls Problem gelöst bitte den Issue auf gelöst setzen (siehe GitHub Forumregel).

@recepogras
Copy link
Author

Hallo @chefkoch009 ,

vielen Dank für deine Antwort. Ggf. habe ich mich nicht präzise genug ausgedrückt.

So wie du das vorgeschlagen hast ist es bereits realisiert. ioBroker sendet mit Hilfe von node-red bereits ein Sturmsignal und KNX Aktoren verrichten prima die Arbeit.

Unter Umständen möchte ich jedoch nachschauen, ob die Jalousien wegen einem Sturmalarm oder vll wegen einem Frostalarm oben sind. Da die KNX-App für die Anezige den Wert braucht, muss diese irgendwo abgefragt werden. Was schlägst du vor, wi das ausgelesen werden soll? Momentan speichere ich den Wert als Workaround auf einem freien Schaltaktorenplatz. Das funktioniert, ist aber teuer. Es gibt noch weitere Fälle, wo ich gerne einen Wert aus ioBroker abfragen würde (Leseanfrage). Das kann z.B. das Wetter draussen oder an einem anderen Ort sein, was von einem Wetterdienst kommen soll. Beispiele gibt es sicher genug.

@RESDE @chefkoch009 Sorry für die späte Antwort. Das Thema ist leider noch ungelöst.

@RESDE
Copy link

RESDE commented Feb 14, 2021

Hallo,
ob die Rolladen oben oder unten sind sollte doch der JAL Aktor, der verwendet wird, per Status-KO bzw. GA mitteilen bzw. automatisch in den ETS-Bus kommunizieren?
Manche Geräte machen das jedoch erst am Ende der Bewegung, so dass es etwas zu Zeitverzögerungen kommen kann mit diesem Status. Welches Gerät bedient denn die Jalousien?
Für die Wertübermittlung von Werten, die seitens des IOBroker Hosts generiert werden, sollte hier zumindest nur das Write Flag im Adapter Objekt gesetzt sein und das Scheiben Flag in der ETS (siehe Tabelle in der Adapter Doku: https://github.com/ioBroker/ioBroker.knx#3-herausfinden-der-schalt--und-statusaddressen)
Wenn Du die Empfänger dieser Werte in der ETS mit diesem GA richtig verdahtest, brauchst Du nicht einen Umweg nehmen wie von Dir beschrieben.

@recepogras
Copy link
Author

VIelen Dank nochmal für die Antwort und sorry für die späte Rückmeldung. Ich hatte das Thema erstmal bei Seite gelegt, da es mit der Behelfslösung nun funktionierte.

Ich meinte mit dem Jalousien eigentlich folgendes, denn die Jalousien werden vom Aktor angesteuert. Das Signal kann von Tastern oder eben von ioBroker kommen.

  • Ich merke, dass die Jalousien irgendwie eigenständig runter oder hochgefahren sind.
  • Nun möchte ich wissen, warum die das gemacht haben könnten. Sturmsignal?
  • Jetzt muss ich schauen, ob ein Sturmstatus ausgelöst ist.... das weiß in dem Fall iobroker. Aber ein KNX-Gerät sollte dies nun abfragen können....

Der zweiten Teil deiner Nachricht prüfe ich nochmal und melde mich.

@Videonisse
Copy link

  • Jetzt muss ich schauen, ob ein Sturmstatus ausgelöst ist.... das weiß in dem Fall iobroker. Aber ein KNX-Gerät sollte dies nun abfragen können....

KNX Adapter can not (yet) respond to a GroupValueRead (abfrage) with a GroupValueRespons (antwort). I don't think @chefkoch009 currently has any plans to implement this. (I'am considering writing a feature request).

At the moment, you need to send (push) this data regularly to the bus, but with the help of a script or similar.

@Videonisse
Copy link

Videonisse commented Dec 4, 2021

@chefkoch009 After rewriting the Adapter code, any new thoughts of how this could be integrated?

It's for example needed if Date and Time should be sent from ioBroker to the KNX Bus and when, for example, a Weatherstation sends GroupValueRead asking for current Time and expects a GroupValueRespons from ioBroker.

My suggestion is that - when in ETS a GA is connected to a Dummy Device with the same Device Address as configured for KNX Adapter, then the Adapter shall respond to the GroupValueRead.

Regarding Date and Time, this could actually be a default feature enabled in the Adapter Config page (the user just has to enable it and add which GA/DP to use.

@recepogras
Copy link
Author

Another case is a day and night signal i send to the bus generated by iobroker. If i restart a consumer device, there is no chance to get the current value from the bus.

@chefkoch009
Copy link
Collaborator

This request is implemented in V2.0.7. If you can confirm the function works as expected, then please close this issue.

@chefkoch009
Copy link
Collaborator

no feedback, so it seems to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants