RS232-DALI - Gateway DALI (Digitally Addressable Lighting Interface) ist ein System zur Ansteuerung von Leuchten und wird im Bereich Hausautomation eingesetzt. Es gibt inzwischen erschwingliche DALI-Leuchten und auch Schaltnetzteile mit Strombegrenzung zur Ansteuerung von LED's und integrierter DALI-Schnittstelle. Damit habe ich gearbeitet. Das Projekt besteht aus 2 Teilen: Der Hardware (ATTiny2313), programmiert in C und einem User-Interface, realisiert mit Python / TKinter. 1.) Hardware + C-Programm Ein ATTiny2313 fungiert als Gateway zwischen serieller Schnittstelle und dem DALI-Bus. Der Controller ist C programmiert, der Flash des Controllers ist zu 50% genutzt. Der Controller wird über die serielle Schnittstelle mit Datensätzen gefüttert. Das kann manuell erfolgen über ein Terminalprogramm oder über eine beliebige Software, die in der Lage ist, die serielle Schnittstelle zu bedienen. Die Datensätze bestehen aus einer Folge von genau 4 Bytes: 1. Byte = Startbyte 2. Byte = DALI-Byte 1 3. Byte = DALI-Byte 2 4. Byte = Cmd (1x senden, 2x senden, das Timing der DALI-Bit-Flanken zurückliefern) Die beiden DALI-Bytes müssen entsprechend der DALI-Vorgaben fertig formatiert sein, sie werden unverändert auf den Dali-Bus geschickt. Nach Ablauf der Sende- und Wartezeit liefert der Controller eine Antwort zurück - auch wenn die Antwort häufig nur lautet, dass keine Antwort empfangen wurde. Die Rückgabe besteht aus genau 3 Byte: 1. Byte = Startbyte (0xA5) 2. Byte = Statusbyte (zeigt an, ob gültige Daten eingegangen sind oder ob ein Fehler erkannt wurde) 3. Byte = Datenbyte (ist nur gültig, sofern das Statusbyte dies signalisiert) 2.) User Interface in Python Die manuellen Eingabe über ein Terminalprogramm ist möglich, aber etwas mühsam und fehlerträchtig. Außerdem ist das DALI-Command-Set recht umfangreich, ein Datenblatt neben der Tastatur ist Pflicht. So ist ein ein Tool mit grafischer Oberfläche entstanden, das die manuelle Eingabe komfortabler gestaltet. Aufwändigere Aktionen wie etwa das Durchsuchen des DALI-Busses nach antwortenden Geräten, das Durchsuchen nach RandomAdressen sowie die Vergabe von ShortAdressen sind damit per Knopfdruck möglich. Alle Aktionen, die häufiger benötigt werden, können direkt per Button-Click ausführt werden. Trotz alledem ist dieses Programm nur zum Testen und zur Konfiguration gedacht, nicht zur praktischen Steuerung eines DALI-Systems. Weitergehende Beschreibungen und einen Schaltplan gibt's in der DALI_readme_151001.pdf, den C-Code für einen ATtiny2313 in "DALI_c_151001.zip", die Python-Dateien in "DALI_python_151001.zip". Michael S.
GUI zur Ansteuerung von Leuchten mit Python/Tkinter In diesem Beitrag geht es darum, die Leuchten eines Gebäudes über eine grafischen Oberfläche zu steuern. Dazu ist eine Demo mit Python / Tkinter entstanden. Um das Programm zu testen muss weder ein DALI-Bus noch müssen reale Leuchten vorhanden sein. Das Prinzip: Vor dem Hintergrund einer Bitmap mit einer Grundrissdarstellung sind Räume definiert (bestehend aus einem oder mehreren Rechtecken), denen Leuchten und Schalter zugewiesen sind. Die Leuchten können als dimmbar definiert sein, dann kann ihnen ein Helligkeitswert von 0% bis 100% zugewiesen werden. Nicht dimmbare Leuchten kennen nur die beiden Werte 0% und 100%. Nach dem Klicken einer Leuchte mit der <Linken-Maustaste> öffnet sich ein Fenster, in dem die Helligkeit des gewählten Objektes oder der gesamten Gruppe (der die Leuchte angehört) geändert werden kann. Klickt man mit der <Rechten-Maustaste> in einen Raum, dann können alle Leuchten des Raumes geschaltet oder es kann eine gespeicherte Szene aufgerufen werden. Das Konzept der Szenen (entspricht den DALI-Szenen): Jeder Leuchte können bis zu 16 "Szenen" zugewiesen werden. Beim Start des Programmes sind diese Szenen undefiniert. In jeder Szene kann genau ein Helligkeitswert (von 0% bis 100%) gespeichert werden. Wird eine Szene aufgerufen, der keine Definition hinterlegt ist (Wert = 255), dann bleibt die Helligkeit der jeweiligen Leuchte unverändert. Um eine Szene zu definieren, klickt man eine Leuchte mit <Shift-Linke-Maustaste> an und kann dann die aktuell eingestellte Helligkeit in eine Szene der Leuchte kopieren. Optional funktioniert das auch für eine ganze Leuchtengruppe oder sämtliche Leuchten eines Raumes. Anmerkung zu den Szenen: In einem echten DALI-System müssen die Szeneneinstellungen nicht softwaremäßig verwaltet werden, die Werte werden in der Hardware (der Leuchte) abgelegt. In den Räumen sind blaue Kreise als Schalter eingebaut. Die Schalter sind "Nachbildungen" realer Taster (ohne Dimmfunktion): Sie schalten den Zustand der Leuchten einer Gruppe EIN bzw. AUS. mfg Michael S.
Ein Nachtrag zum RS232-DALI-Gateway: Das RS232-DALI-Gateway bietet nun noch die zusätzliche Option, passiv am DALI-Bus zu lauschen und die Kommunikation aufzuzeichnen. Der Controller (in diesem Fall ein AT90S2313) kann alternativ als DALI-Master oder als DALI-Logger starten. Ein Jumper legt den Modus fest. Die Funktionalität des Masters ist unverändert. Als Logger arbeitend wird der Foreward Frame und (falls vorhanden) der Backward Frame via Serielle Schnittstelle ausgegeben. Ein Python-Script (plus eine Prise Tkinter) interpretieren die Daten und geben sie in einem Editorfenster in lesbarer Form aus. Natürlich kann jeder das Programm der eigenen Wahl zur Auswertung der Seriellen Daten einsetzen. In der erweiterten 'Readme.pdf' ist das Protokoll beschrieben und ein aktualisierter Schaltplan ist beigefügt. Den C-Code für den AT90S2313 gibt's in der Datei 'DALI_C_AT90S2313_151223.zip', den Python-Code für Master und den Logger der Datei 'DALI_Python_151223.zip'. Viel Spaß beim Leuchten und Loggen, mfg Michael S.
Hallo Michael, erstmal Danke für das Projekt und die ausführliche Dokumentation. Das war bestimmt eine Menge Arbeit. Ich habe hier ein paar Leuchten mit DALI EVG herumliegen und werde dein Projekt verwenden und den DALI Gateway zu testen. Hat es einen Grund warum die letzte und aktuelle Version des C-Codes auf einem AT90S2313 läuft und nicht auf dem aktuelleren ATtiny2313 ?? Bei der ersten Version "DALI_c_151001.zip" für den ATtiny2313 fehlt die DALI Logger Funktion. Richtig ?? Gruß Alois ;)
Alois N. schrieb: > Hat es einen Grund warum die letzte und aktuelle Version des C-Codes auf > einem AT90S2313 läuft und nicht auf dem aktuelleren ATtiny2313 ?? Ja, aber nur einen ganz banalen: Ich habe aus der Zeit meiner ersten Experimente mit den Controllern noch einige AT90S2313 liegen, die sollten nun noch eine Aufgabe erhalten. Um den ATtiny2313 zu verwenden, müssen "nur" einige Registernamen angepaßt werden. > Bei der ersten Version "DALI_c_151001.zip" für den ATtiny2313 fehlt die > DALI Logger Funktion. Richtig ?? Das ist richtig. mfg Michael S.
Hallo Michael, deine DALI-Schaltung habe ich inzwischen auf eine kleine Platine (78 x 50mm) gepackt und ein paar Kleinigkeiten ergänzt. Die Platine ist aufgegliedert in drei Schaltungen: - DALI Stromversorgung - DALI Serial Gateway - USB/Serial Converter Die Stromversorgung sowie der USB/Serial-Converter können optional bestückt werden. Auf der Platine befindet sich auch eine 6-polige AVR-ISP Leiste zum Programmieren des Microcontrollers. Den Quellcode Stand 23.12.2015 habe ich inzwischen auf den ATtiny2313 angepasst.
Beim Anlernen von neuen DALI-Ballasts ist mir ein Problem im Python-Programmcode für den DALI-Master aufgefallen: Während der Suche nach der RandomAdr kann sich das Programm aufhängen. Bei neuen, bislang noch nicht verwendeten Geräten wird während des Commissioning übrigens die DALI-Adresse 127 (255 >> 1) angezeigt. mfg Michael S.
In diesem Thread hatte ich vor einiger Zeit ein RS232-DALI-Gateway und später eine GUI mit Python / Tkinter zum Schalten von symbolischen Leuchten per Mausklick vorgestellt. In diesem Beitrag sind beide Ansätze vereint, nun können in einem Grundriss Leuchten angewählt werden, die holen die aktuellen Helligkeitswerte aus der DALI-Leuchte im Raum und öffnen einen Dialog zum Schalten von Einzelleuchten oder Leuchtengruppen. Das GUI-Projekt ist noch einmal gründlich überarbeitet und aufgeräumt worden. Die Kommunikation mit den echten DALI-Geräten am DALI-Bus ist implementiert und in einem Modul zusammengefasst. Und die Definition des "baulichen Projektes" ist in eine XML-Datei ausgelagert. Um die Arbeitsweise praktisch ausprobieren und nachvollziehen zu können, wird nun allerdings ein DALI-Bus mit realen DALI-Leuchten sowie ein geeignetes Gateway benötigt. Ok, genaugenommen ist nur eine Serielle Schnittstelle erforderlich, dann startet das Programm zumindest - es tut aber nichts wirklich nützliches. In der readme.pdf bemühe ich mich, die Arbeitsweise der GUI, die Schnittstelle zum DALI-Bus und den Aufbau der Projektdefinition in der XML-Datei ausführlicher zu erhellen. Viel Spaß beim Schalten und Walten, mfg Michael S.
Wie funktioniert eigentlich die Dali Stromversorgung ? Welche Spannung Wieviel Strom kann man damit auch Daligeräte am Bus speisen ? mfg
Nachtrag zum DaliGateway Bei der Arbeit mit dem DaliGateway traten im praktischen Betrieb bei einigen Leuchten Probleme auf: Sie ließen sich zwar ansteuern, aber das Auslesen von Parametern führte (fast immer) zu Fehlermeldungen. Die Analyse der Ursachen brachte folgendes Ergebnis: Die Bitzeiten der Anworten weichen teilweise deutlich von den Defaultwerten ab - um bis zu 30%. Daher mußte ich die Grenzwerte mit den Konstanten HTMIN, HTMAX (HT für HalberTakt) und GTMIN, GTMAX (GT für GanzerTakt) anpassen. Wen es interessiert, der findet eine ausführlichere Beschreibung in der Datei "Nachtrag_160608.pdf". Die aktualisierte "DALI_main.c" gibt's als "DALI_main_16080.zip" . mfg Michael S. PS. Kennt jemand Quellen/Dokumentationen zu DALI Version 2 und / oder zur eDALI-Erweiterung von Tridonic ? Ein kurzer Hinweis wäre hilfreich.
Michael S. schrieb: > PS. > > Kennt jemand Quellen/Dokumentationen zu DALI Version 2 und / oder zur > eDALI-Erweiterung von Tridonic ? > > Ein kurzer Hinweis wäre hilfreich. Hallo Michael, hast du mittlerweile schon Quellen / Dokumentationen zu DALI 2 gefunden und könntest die bereitstellen? Oder jemand anderes?
Hi Leute, weiß jemand ob das Interface mit der Lunatone Software und Lunatone DALI DT8 Geräten funktioniert? Mir geht es lediglich ums setzen der DALI Adresse und alles was nötig ist, damit der DALI Aktor funktioniert. Gesteuert werden soll es mit einem KNX-DALI Gateway.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.