W:
knx_send: 1/1/0
knx_cache: 1/1/3
alexa_device: Till_Stripe_Oben
alexa_name: 'Till Stripe oben'
alexa_description: 'Till Lichterschlauch oben'
alexa_icon: 'LIGHT'
alexa_actions: 'TurnOn TurnOff'
Dimmwert:
knx_send: 1/1/2
knx_cache: 1/1/4
alexa_actions: 'AdjustBrightness SetBrightness'
alexa_retrievable: True
alexa_item_range: '0-100'
alexa_device: Till_Stripe_Oben
alexa_name: 'Till Stripe oben'
alexa_icon: 'LIGHT'
Szene:
type: scene
knx_cache: 10/1/2
knx_send: 10/1/2
knx_dpt: 18.001
enforce_updates: 'true'
Nur die knx-Config vom Item sieht ok aus (schau im Log, ob der Cache Fehler beim Start wirft).
Wie verhält sich denn alexa beim Start? Kommentier doch mal das Alexa-Plugin in der plugin.yaml aus und starte. Passiert das gleiche?
Mit Szenen kenne ich mich nicht aus. Könnte gegebenenfalls beim Start die Szene reinpfuschen? -> Szene auskommentieren und nochmal probieren.
So kannst du systematisch die Quelle eingrenzen.
und gibst ihn über enforce_updates dann auch wieder aus (zumindest an nicht-Knx Komponenten der Szene).
Es reagieren aber ja KNX-Komponenten
Deshalb hatte ich zumindest geschrieben, da ich nicht sicher bin ob Szenen auf diesem (um-)Weg bei der Initialisierung auch auf KNX mit ausgegeben werden und nicht die Zeit habe das für Dich zu testen.
Insgesamt macht bei Szenen ein knx_cache oder ein knx_init keinen Sinn, da niemand auf einen lesenden Bus Request einer Szene antwortet. knx_cache hängt im Ergebnis also davon ab, ob seit dem Start von knxd mal eine Szene gesendet wurde.
Falls Du nur KNX Komponenten in der Szene hast, einfach das knx_cache ersatzlos weglassen. Falls Du auch andere Komponenten in der Szene hast, ein knx_listen verwenden. Das enforce_updates wirst Du brauchen, weil Du sonst von SmartHomeNG aus nicht zwei mal hintereinander die selbe Szene ansteuern kannst.
parse_item
versteh ich nicht ganz wie das mit update_item
korrespondieren soll, vor allem weil zweitere Funktion wohl nur gedacht ist, um Änderungen an Itemwert an das Device zu schicken?
Die parse_item wird beim Laden des Plugins für jedes Item aufgerufen. Dort untersucht das Plugin of das Item bestimmte Attribute aufweist. Ist das der Fall, dann wird das Item z.B. in ein Plugin-eigenes Dictionary aufgenommen und die Funktion gibt als Rückgabewert eine Referenz auf eine update_item Funktion zurück.
Wenn sich nun im Laufe der Ausführung von SmartHomeNG ein Item ändert und für dieses Item ein Eintrag für das Plugin und dessen update_item Methode existiert, dann wird diese Methode mit den Parametern item, caller, source und dest aufgerufen.
In der Updaten_item Methode wird dann geprüft wo der Ursprung der Item Änderung liegt. Ist das ausserhalb des Plugins (z.B eine Logik oder ein anderes Plugin) dann wird darauf reagiert,
Wenn Du in Deinem Plugin ein Item ändern möchtest, dann rufst Du einfach das Item wie in einer Logik auf mit einem Parameter der den neuen Wert beeinhaltet.
Hat jemand eine Idee, wie ich das Logging dazu bringe, den Monat auf Englisch zu loggen statt Deutsch? Das System möchte ich generell schon Deutsch lassen, nur das Logging nicht. So sieht meine Config aus:
format: '%(asctime)s;%(message)s;'
datefmt: '%b %d %H:%M:%S'
Das Ergebnis sollte Mar 02 18:09:49 WARNING
statt Mär 02 18:09:49 WARNING
sein. Wäre über Hilfe sehr froh.
Wenn ich das richtig verstehe, nutzt logging strftime
- und damit geht die Formatierung nur entsprechend der aktuellen locale.
Du kannst ja mal versuchen, vor dem Aufruf von shng die locale zu ändern (auf en_US oder C oder so). Die generellen Spracheinstellungen von shng kommen ja nicht aus der locale, sondern aus der EInstellung für shng, oder?