Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bernator
    antwortet
    hab jetzt mal den letzten Stand ausgecheckt, bekomme da aber folgende Meldung: "saved memory doesn't match manufacturerId, version or hardwaretype"
    Ich hab da scheinbar was übersehen, du prüfst da neuerdings irgendwelche Dinge ab die bei einem "blanken" Controller noch fehlen, wie und wo definiere ich diese Dinge?

    Einen Kommentar schreiben:


  • wkaa
    antwortet
    Zitat von thesing Beitrag anzeigen
    Dazu würde ich einfach eine Instanz der Linuxplatform erzeugen und dann direkt als uint8_t* ein festes Telegramm senden.
    Danke, dann hab es doch richtig verstanden. So werde ich es machen. Wenn die Kommunikation läuft kann ich ja die ETS zur Konfiguration verwenden.

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Hallo Werner,

    Machbar ist das ganze zwar, aber ich glaube nicht das es notwendig ist. Du willst ja nur in der Linuxplatform die Methoden zum Lesen und schreiben über uart implementieren. Dazu würde ich einfach eine Instanz der Linuxplatform erzeugen und dann direkt als uint8_t* ein festes Telegramm senden. Wenn du dass in Monitor von ETS siehst ist das Senden erledigt. In einer Schleife würde ich Telegramme lesen. Wenn du dort die gleichen liest die du auch im Monitor siehst bist du damit auch fertig.
    Dann kannst du einfach testen ob das Beispiel auch mit der Bau07B0 funktioniert.

    Wenn du den Stack unbedingt per Code konfigurieren willst: Du müsstest für AdressTable, AssociationTable, ApplicationProgramm und GroupObjectTable Speicher über das TableObject holen und dann den dann richtig füllen. Das Format dazu steht in der Knx-Spezifikation, sollte sich aber auch aus dem Code ableiten lassen.
    Im Wesentlichen (aus dem Kopf):
    ApplicationProgramm: Die konfigurierten Parameter.
    AddressTable: uint16_t[]; {Länge des Arrays, GA0, GA1, ....} (AT)
    GroupObjectTable: uint16_t[] {Länge des Arrays; KO0, KO1, ...} (GOT)
    AssociationTable: uint16_t[] {Länge des Arrays( der Paare); Paar1(Index von AT, Index von GOT), Paar2(Index von AT, Index von GOT)

    Das wäre also schon relativ viel Aufwand das per Code zu konfigurieren.

    VG
    Thomas

    Einen Kommentar schreiben:


  • wkaa
    antwortet
    Hallo,

    ich fange jetzt mit der RS232 Kommunkation unter Linux an.

    Die Konfiguration des Gerätes wird aus dem Speicher gelesen. Gibt es eine Möglichkeit Kommunikationsobjekte und Gruppenadressen ohne die ETS anzulegen, da noch keine Verbindung zum KNX Bus besteht. So würde ich mir gerne ein Gerät mit folgenden Daten erzeugen:
    • Physikalische Adresse 1.1.150
    • Gruppe 2/0/10 Schalten Ein/Aus
    • Gruppe 2/0/11 Status Schalten
    Es gab nur eine Funktion zum Lesen der pysikalischen Adresse, also habe ich mit eine zum Schreiben dazugefügt. Gescheitert bin ich aber beim Erzeugen der Gruppen- und Kommunikationsobjekte.

    Jetzt könnte ich mir 2 Möglichkeiten vorstellen:
    1. Beim Starten werden die entsprechenden Daten im Speicher des Gerätes erzeugt
    2. Die Konfiguration des Gerätes wird gelesen und geschrieben (readMemory/WriteMemory). Kann ich eine gültige Konfiguration erzeugen und im entsprechenden Format erzeugen?
    Das ganze brauche ich nur um die Kommunikation zu entwickeln oder bin ich vielleicht auf dem Holzweg?

    Vielen Dank

    Werner

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    Danke für die schnelle Antwort

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Hallo Bernhard,

    der Stack an sich sollte damit klar kommen. Im DataLink-Layer werden nur Telegramme verarbeitet die als Ziel die eigene PA oder eine GA aus der GA-Tabelle haben.
    Wahrscheinlich wäre es am einfachsten einfach zwei Network-Layer über ein DataLink-Layer zu packen. Das DataLinkLayer kann dann über PA und GA entscheiden an welche NetworkLayer die Telegramme gehen. Beim Senden muss man nur drauf achten das Telegramm ggf. auch in das andere Networklayer zu geben.

    VG
    Thomas

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    Hallo Thomas,

    wäre es prizipiell denkbar mehrere Instanzen des Stacks laufen zu lassen? Mir ist bewusst das man an der Platform Implementierung etwas anpassen müsste da sich jede Instanz ja den Kommunikationskanal mit den anderen teilt. In der ETS wäre jede Instanz ein eigenes Gerät mit eigener physikalischer Adresse.
    Ist nur so ein Gedanke den ich noch nicht zu Ende gedacht habe, aber gibt es aus deiner Sicht bereits K.O. Kriterien?

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Das sollte da keinen Unterschied zwischen der ESP8266- und der Linuxversion geben. Die Konfiguration per ETS sollte auch ohne knxd gehen. Allerdings braucht man den natürlich immer noch zum Routing zwischen TP und IP.

    Einen Kommentar schreiben:


  • jeff25
    antwortet
    Hallo Thomas,

    super vielen Dank für die Erklärung. Werde ich gleich prüfen, wenn es nicht so wichtig ist den Prog Taster drückt man eh nur einmal :-)
    Das ganze kann ich bis jetzt nur in KNX-linux Beispiel testen oder in knx-demo und meinem esp8266 geht es noch nicht oder? Da muss ich
    noch über knxd als router gehen oder?

    Gruß
    RObert

    Einen Kommentar schreiben:


  • thesing
    antwortet
    jeff25 Der Stack läuft normal. Lediglich der Zugriff auf die GPIOs ist gescheitert. Vermutlich hast du keine Recht auf /sys/class/gpio/export usw. zuzugreifen. Das benötigst du aber nur für den Programmierbutton, die ProgrammierLED und zur Verbindung zum RF-Modul bei knx-rf. Die Fehler kommen also durch pinMode; digitalwrite usw. Wenn du GPIOs nutzen willst muss du das Rechteproblem lösen:
    Es muss in der Shell ein "ls /sys/class/gpio" funktionieren. Dafür sollte "sudo usermod -a -G gpio pi" den User pi in die Gruppe gpio packen. Nach einem abmelden und anmelden sollte der Benutzer auch auf die gpios Zugriff haben.
    Prinzipiell ist im Linux-Demo-Code aber noch die Funktion, dass der Programmiermodus automatisch aktiviert wird, wenn das Gerät nicht konfiguriert wurde. Wenn man die Fehlermeldungen weglässt siehst du das auch bei deiner Ausgabe:
    Code:
    main() start. <-- Start
    saved memory doesn't match manufacturerId, version or hardwaretype <-- Speicher passt nicht zum Programm (oder ist nicht da)
    not configured <-- Nicht konfiguriert
    progmode on <-- Programmiermodus aktiv
    Du kannst also auch einfach die Fehler ignorieren und mit ETS konfigurieren.

    VG
    Thomas

    Einen Kommentar schreiben:


  • jeff25
    antwortet
    hallo thesing ,

    wollte gerad emal deinen erweiterten stack testen und bei mir kommt auf einem Raspberry PI 3 folgendes:

    main() start.
    saved memory doesn't match manufacturerId, version or hardwaretype
    not configured
    Export GPIO pin 0
    Could not export GPIO pin(write)!
    : Device or resource busy
    Set GPIO direction for pin 0 to OUTPUT
    Export GPIO pin 0
    Could not export GPIO pin(write)!
    : Device or resource busy
    Set GPIO direction for pin 0 to OUTPUT
    Could not set mode for GPIO pin(write)!
    : Device or resource busy
    progmode on

    Was mache ich denn da falsch?

    Gruß
    Robert

    Einen Kommentar schreiben:


  • Nanosonde
    antwortet
    Zitat von wkaa Beitrag anzeigen
    Die Teile sind jetzt bestellt, werden GND und 5V auch jeweils angeschlossen? (CP2101<->ADUM und ADUM<->BCU)
    Na klar. Das habe ich jetzt mal vorausgesetzt.
    Ich meinte damit nur, dass nicht noch andere Signale wie RTS/CTS, DTR/DSR oder so angeschlossen werden bzw. belegt werden müssen.

    UPDATE:
    Die Pinbelegung der Siemens-BCU hatte ich hierher: https://www.konnekting.de/wp-content...bcu_pinout.png

    Weitere Details gab es hier: https://michlstechblog.info/blog/ras...r-with-the-pi/

    Allerdings verwende ich die 5WG1117-2AB12.
    Zuletzt geändert von Nanosonde; 28.12.2019, 16:43.

    Einen Kommentar schreiben:


  • wkaa
    antwortet
    Zitat von Nanosonde Beitrag anzeigen
    Nur TXD/RXD fertig
    Die Teile sind jetzt bestellt, werden GND und 5V auch jeweils angeschlossen? (CP2101<->ADUM und ADUM<->BCU)
    Zuletzt geändert von wkaa; 28.12.2019, 01:04.

    Einen Kommentar schreiben:


  • Nanosonde
    antwortet
    Zitat von wkaa Beitrag anzeigen
    ich würde mir das anschauen. Aber ich warte noch auf die Hardware, vielleicht sollte ich mir noch einen Optokoppler für die Siemens-BCU holen.
    Ich nutze die Siemens BCU mit einem ADUM1201 an einer CP2102 USB-Serial UART Bridge. Nur TXD/RXD fertig.
    Dann per USB am Raspberry Pi angeschlossen.

    Einen Kommentar schreiben:


  • wkaa
    antwortet
    Zitat von thesing Beitrag anzeigen
    zwei Ethernet-Buchsen
    Der würde passen, mit den Ethernet Buchsen geht es bei mir eng zu

    Einen Kommentar schreiben:

Lädt...
X