Keine Ahnung, aber die Applikation ist sowieso sehr spartanisch.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Entwicklung eines Tastsensors
Einklappen
X
-
Eine befreundete Innenarchitektin hat mir das so erklärt (bzw. so halb Vermutung, weil genau wissen wir's nicht):
Diese Schalter werden wahrscheinlich vor allem von Innenarchitekturbüros zum Einbau in Luxusgebäuden benutzt. Diese Büros bekommen wohl meistens einen Prozentualen Anteil am "Einkaufspreis" der Innenarchitektur die sie verkaufen.
Das heißt der Schalter muss vor allem zwei Dinge sein: Teuer (damit sich das für das Innenarchitekturbüro lohnt) und einfach (weil die jetzt auch ned unbedingt die großen KNX-Experten an der Hand haben)
Würde soweit ich mich in den letzten paar Wochen informiert habe beides zutreffen...
- cad435
Kommentar
-
Zitat von coko Beitrag anzeigenSpontane Idee zur Benennung:Touch-Taster mit Optionalen Displays (Prefix TTD), wobei es toll wäre wenn wir damit dann beliebig viele Tastenpaare (habe das von Hardware-Seite nicht weiter geprüft) mit einem optionalen Display abbilden könnten. Das ist über Channels recht einfach möglich.
Das mit den Channels und den Wiederholstrukturen ist noch so ne Sache, da hab ich mich noch nicht ran getraut
Muss erstmal laufen.
Hardwaretechnisch kann der CAP1188 insgesamt 8 Tasten. Ich brauche/möchte evtl. eine für eine Proximity-Detection, da muss ich aber mal gucken ob ich die "proximity" auch einfach intern ausrechnen kann.
Andere Idee wäre mit einem IR sensor durch den schmalen plexiglasstreifen in der Mitte raus zu schauen (der VL6180 kann das wohl zu einem gewissen Grad, muss man aber ausprobieren...)
Zitat von coko Beitrag anzeigen- Paramerer-Type: Name sollte mit letztem Teil in der Id übereinstimmen, Du hast hier teilweise sogar schon Duplikate
- Bei Text-Parametern musst Du berücksichtigen, dass diese als Null-terminiert erwartet werden. Im Speicherlayout daher noch ein leeres Byte (befüllt mit 0x00) dainter freilassen, ansonsten müsstestDu in der Firmware eine besondere Behandlung für das Fehlen bei Maximallänge vorsehen.
Zitat von coko Beitrag anzeigen- %AID%_P-%TT%00009 und %AID%_P-%TT%00010 überlappen sind
- Du verwendest Kanal-Nummern %C% außerhalb von Kanälen
Auch die %AID%_PT-DisplayContentText/Pict auf 8bit reduziert (1Byte, in der Firmware ist die kleinste Einheit eh immer ein Byte, daher hab ich mir das Aufbrechen in Bits erspart, keine Ahnung ob das OK ist oder ob das gravierende Nachteile mit sich bringt.)
Zitat von coko Beitrag anzeigenDPT16 KOs benötigen 14 Bytes Größe. Eine Beschränkung der Text-Länge müsstest Du in der Firmware vornehmen, ggf. in Abhängig von geeigneten Konfigurationen zum Verhalten
Fakt ist, dass bei dem Display und der Größe die ich hier mal ausprobiert habe ab 8 Zeichen keinen Sinn mehr gibt, weil das Display zu klein ist. Und lesen soll man auch noch was können, also will ich den Text nicht beliebig klein machen.
Ich möchte auf jeden fall eine Funktion einbauen, mit der man den Text auf den Displays temporär überschreiben kann. Das ganze würde ich selbstrückstellend ausführen, sprich ich überschreibe den Displaytext mit einem anderen Text und nach 5 sek oder so wird der temporäre Text wieder gelöscht und der normale text erscheint wieder.
Das soll vor allem mit den Pictogrammen so funktionieren, dass man z.b. das Icon für Licht beim Dimmen mit dem %-Value des aktuellen Levels rein schreibt (geht das mit dem Integrierten Logikmodul?)
image.pngimage.png
Zitat von coko Beitrag anzeigenFür den Konfigurationsblock solltest Du noch einen eindeutigere Benennung finden (ohne Config) und ein eindeutige Icons. Auf der obersten Ebene sollten diese ebenfalls eindeutig sein.
Für die Benennung evtl "Hardware Config"? Fällt mir Spontan jetzt nichts besseres ein...
Zitat von coko Beitrag anzeigen%AID%_PT-LEDColors: Was für eine Codierung verwendest Du da? Farbwinkel in 8Bit? Wäre eine freie Farbwahl möglich ist von Hardware-Seite und Du diese erlauben willst, dann würde ich empfehlen die Auswahl für externes KO abzutrennen.
Wie meinst du die Auswahl für externes KO abtrennen? Dachte halt eher so "entweder du nimmst eine voreingestellte Farbe oder du sendest mir eine Farbe über den Bus"
Zitat von coko Beitrag anzeigen%AID%_PT-DisplayContentPict: Sind das extern vorgegebene Werte?
Zitat von coko Beitrag anzeigen%AID%_PT-CAPSensitivity: Warum so herum codiert?
Zitat von coko Beitrag anzeigenGibt es einen besonderen Grund warum Du keine Unions für die Parameter-Definition verwendest? Du hast zwar aktuell keine überlappenden alternativen Parameter, die Erfahrung hat jedoch gezeigt dass Du mit deren Einsatz flexibler bist, u.A. mit Blick auf wiederholende Strukturen.
Man muss auch dazusagen, dass die Software bei dem ganzen Projekt mit abstand mein persönlicher Schwachpunkt ist. Ich bin schon etwas bewandert in C/C++ bzw. Programmierung allgemein, aber definitiv weit unter dem gefühlten Level der ganzen Profis hier
Zuletzt geändert von cad435; 20.04.2025, 01:20.
Kommentar
-
Zitat von cad435 Beitrag anzeigenJa stimmt, da muss ich nochmal GIMP und all meine Design-Skills aufbringen um ein Icon zu basteln
https://pictogrammers.com/library/mdi/
Kommentar
-
Zitat von cad435 Beitrag anzeigenDas soll vor allem mit den Pictogrammen so funktionieren, dass man z.B. das Icon für Licht beim Dimmen mit dem %-Value des aktuellen Levels rein schreibt (geht das mit dem Integrierten Logikmodul?)
Aber ab der nächsten (evtl. übernächsten) Version vom Logikmodul wird man sich einen DPT16 zusammenbasteln können (also aus "T: %E1:0,02%°C" wird dann "T: 22,75°C"). Die Formatiersprache steht noch nicht ganz fest, wird aber das aus printf bekannte sein, ergänzt durch Eingänge, Ausgang und Benutzerformeln.
Gruß, Waldemar
- Likes 2
Kommentar
-
Zitat von cad435 Beitrag anzeigenAuch die %AID%_PT-DisplayContentText/Pict auf 8bit reduziert (1Byte, in der Firmware ist die kleinste Einheit eh immer ein Byte, daher hab ich mir das Aufbrechen in Bits erspart, keine Ahnung ob das OK ist oder ob das gravierende Nachteile mit sich bringt.)
Zitat von cad435 Beitrag anzeigendass bei dem Display und der Größe die ich hier mal ausprobiert habe ab 8 Zeichen keinen Sinn mehr gibt, weil das Display zu klein ist. Und lesen soll man auch noch was können, also will ich den Text nicht beliebig klein machen.- Abschneiden ud Ignorieren der Zeichen 9 bis 14 (Möglicher Informationsverlust)
- Zeichenweise durchscrollen bis zur Anzeige von Zeichen 7 bis 14 (eher unruhig, mögliche Verkürzung bei weniger als 14 Zeichen)
- Anzeige in zwei Teilen "1234567…" und "…89abcde" (unschöner Umbruch)
Zitat von cad435 Beitrag anzeigenFür die Benennung evtl "Hardware Config"? Fällt mir Spontan jetzt nichts besseres ein...- Basiseinstellungen für den Touch-Controller (aktuell "Touch-Sensing")
- Anzeige
- Basiseinstellungen
- je Beschriftung (für Links und Rechts identisch)
Zitat von cad435 Beitrag anzeigenIch möchte auf jeden fall eine Funktion einbauen, mit der man den Text auf den Displays temporär überschreiben kann. Das ganze würde ich selbstrückstellend ausführen, sprich ich überschreibe den Displaytext mit einem anderen Text und nach 5 sek oder so wird der temporäre Text wieder gelöscht und der normale text erscheint wieder.
Das soll vor allem mit den Pictogrammen so funktionieren, dass man z.b. das Icon für Licht beim Dimmen mit dem %-Value des aktuellen Levels rein schreibt (geht das mit dem Integrierten Logikmodul?)Code:Display einschalten: (*) dauerhaft ( ) nur bei Annäherung/Präsenz Standardtext-Definition: (*) fest ( ) über KO Standardtext: [ ] # 8 Zeichen Icon-Definition (*) fest ( ) über KO Icon [ ... |V] # kein (0) / Lampe An (1) / Lampe Aus (2) / ... reservierte nicht zeigen ... / ... eigenes Icon (x) .. Status-Ausgabe bei Bedienung: ( ) nein (*) ja Anzeigedauer (0=Zentralwert): [ 5] s Typ [ Prozent |V] Icon [ ... |V] # unverändert / kein / ...
Zitat von cad435 Beitrag anzeigenNaja, ich würd halt vorgegebene Icons in die Firmware fest reinprogrammieren und die kann man dann halt auswählen... Kann man dann immer noch mit "custom" erweitern, aber fürs erste muss das Ding wie gesagt mal irgendwas tun- 0 für kein Icon
- 1..f für Icons in der Firmware
- f..F reserviert fü weitere Icons in der Firmware - nicht in Auswahllisten in der ETS aufnehmen und über den Bus ignorieren?
- F+1..255 für eigene Icons
Zitat von cad435 Beitrag anzeigenWie meinst du die Auswahl für externes KO abtrennen? Dachte halt eher so "entweder du nimmst eine voreingestellte Farbe oder du sendest mir eine Farbe über den Bus"
Code:... Farbdefinition: (*) fest ( ) über KO Farbe [ ... |V] # oder ETS-Farbauswahl ...
Dann hast Du einen klares Muster in der UI für Werte die Du direkt angibst und über KO entgegennimmst, kannst ohne Bitoperationen oder Fallunterscheidungen in der Firmware die beiden Fälle unterscheiden, und könntest z.B. für den Fall "über KO" auch noch leichter eine Konfiguration erlauben die festlegt was passieren soll wenn noch kein Wert vom Bus vorliegt. Btw.: Eine Standardwert an dieser Stelle wäre ein Fall für mehrfache Nutzung des selben Parameter-Speicherbereichs, bzw. mehrfacher Referenzierung.
Zitat von cad435 Beitrag anzeigenWeil das die gleiche Reihenfolge wie der enum im C-Code ist... einfach so übernommen.
Zitat von cad435 Beitrag anzeigenHardwaretechnisch kann der CAP1188 insgesamt 8 Tasten. Ich brauche/möchte evtl. eine für eine Proximity-Detection, da muss ich aber mal gucken ob ich die "proximity" auch einfach intern ausrechnen kann.
Alles nur Vorschläge und teilweise auch eher was zum vorab Mitdenken, um späteren Änderungsbedarf zu reduzieren. Mache Dich da nicht verrückt und schau erst mal, dass Du einen laufenden Prototyp hast. Dann kann man weitersehen. Die veröffentlichten OpenKNX-Lösungen sind alle nicht von heute auf morgen entstanden.
In diesem Sinne nun ersteinmal frohe Ostern!
Kommentar
-
Danke für die ganzen Hinweise coko
Vor allem das
Zitat von coko Beitrag anzeigenCode:
Und auch die Idee mit den Waben gefällt mir gut...
Demnächst gehts erstmal wieder bisschen mit der Hardware weiter, hatte über die Feiertage ein paar teile Alu bestellt zum fräsen.
Zusätzlich würde ich gerne mal alles auf GitHub hochladen. Da ich absoluter Anfänger in Git Sachen bin (nutze zu 99% grafische Oberfläche von Github) muss ich mir das erstmal ansehen wie das mit dem "verlinken" auf externe Module geht (Die ganzen OAM-Module etc.)
Edit: Sieht zumindest auf den ersten Blick genauso aus wie ein existierendes OpenKNX repo
https://github.com/cad435/TAS-UP-4x-TouchRGB
Schöne Ostern euch
- cad435
Oh, noch eine Nachgestellte frage:
Als ich das erste mal meine Sourcen kompiliert habe über das Powershell -Skript, da musste ich bei großej teilen des skripes bei den Pfadangaben immer um einen Pfad zurückspringen../../lib/OGM-Common/scripts/setup/reusable/Build-Release-Preprocess.ps1 $args[0]
Das zog sich durch einen Haufen skripte durch und ist sicherlich nicht so gewollt
Was mache Ich hierbei falsch?Zuletzt geändert von cad435; 21.04.2025, 19:53.
Kommentar
-
Zitat von cad435 Beitrag anzeigenWas mache Ich hierbei falsch?. Wäre aber interessant, das herauszufinden, damit es anderen nicht passiert.
Wenn Du ein Projekt von uns nutzt, legst Du einen Root-Ordner an (bei uns heißt der OpenKNX, muss aber nicht). In diesen Ordner machst Du ein Clone vom OAM-xxx, dass Du nutzen willst. Dann machst Du ein cd OAM-xxx\restore. Dort führst Du das Restore-Script aus (zum weiterentwickeln das mit -Branch am Ende). Das cloned Dir alle benötigten Module in den OpenKNX-Ordner.
Und dann passen alle Pfade.
Jetzt kannst Du uns sagen, was Du anders gemacht hast....
Gruß, Waldemar
Kommentar
-
Soweit genau so!
Funktioniert auch soweit.
Ich vermute, dass die ps1 skripte bei euch irgendwie aus dem "Haupt"-Ordner (z.b. SEN-UP1-8xTH) ausgeführt werden.
Dann würde nämlich der Aufruf im Orginalscript (Build-Release.ps1, Zeile 30) in den richtigen PfadSEN-UP1-8xTH/lib/OGM-Common/scripts/setup/reusable/Build-Release-Preprocess.ps1
Wenn man aber nun in den "scripts" Ordner hineingeht und das Script Build-Release.ps1 ausführt, dann wird das in meinem Beispiel im Ordner "SEN-UP1-8xTH/scripts" ausgeführt. Das heißt der Aufruf in Zeile 30 zeigt jetzt aufSEN-UP1-8xTH/scripts/lib/OGM-Common/scripts/setup/reusable/Build-Release-Preprocess.ps1
Grüße
- cad435
Kommentar
-
Zitat von cad435 Beitrag anzeigenZitat von coko Beitrag anzeigen- Bei Text-Parametern musst Du berücksichtigen, dass diese als Null-terminiert erwartet werden. Im Speicherlayout daher noch ein leeres Byte (befüllt mit 0x00) dainter freilassen, ansonsten müsstestDu in der Firmware eine besondere Behandlung für das Fehlen bei Maximallänge vorsehen.
Das gibt absolut Sinn, hab ich so eingebaut, Danke!
Kommentar
-
Ja ich bin da grad auch nochmal drüber gefallen.
Also nur zum Verständnis:
Ich nehme den ParameterType mit 8Bytes zeichen, damit lässt mich die ETS 8 Bytes eintragen.
In der MemoryMap also bei <Parameters> baue ich mir den Offset dann mit 9bytes zusammen, sodass immer mindestens 1 Byte für die Nullterminierung frei bleibt.
Im KO werden aber bis zu 14Byte gesendet, das hat aber erstmal NICHTS mit dem Parameter zu tun, ja?
Das "abschneiden" (es wird wohl abschneiden werden) muss ich in der firmware machen, sodass ich den Parameter dann wieder aus der Firmware heraus mit max 8 Zeichen + Nullterminierung beschreiben kann.
So korrekt verstanden?
Kommentar
-
Zitat von cad435 Beitrag anzeigenIn der MemoryMap also bei <Parameters> baue ich mir den Offset dann mit 9bytes zusammen, sodass immer mindestens 1 Byte für die Nullterminierung frei bleibt.
Zitat von cad435 Beitrag anzeigenIm KO werden aber bis zu 14Byte gesendet, das hat aber erstmal NICHTS mit dem Parameter zu tun, ja?
Zitat von cad435 Beitrag anzeigenDas "abschneiden" (es wird wohl abschneiden werden) muss ich in der firmware machen, sodass ich den Parameter dann wieder aus der Firmware heraus mit max 8 Zeichen + Nullterminierung beschreiben kann.
Ich verstehe allerdings nicht warum Du den Parameterwert aus der Firmware verändern willst. Was ist Dein Ziel dabei?
Kommentar
-
Zitat von coko Beitrag anzeigenIch verstehe allerdings nicht warum Du den Parameterwert aus der Firmware verändern willst. Was ist Dein Ziel dabei?
Also ich hätte dann wohl eher schreiben sollen "Variablenwert verändern".
Gibt es eine Dokumentation zu den unions?
Ich kenne Unions in C/C++, verwende sie allerdings nicht wirklich. Sind die XML-Unions quasi gleich? In C kann ich damit ja einfach verschiedene Bits/Nibbels/was weis ich in einen Speicherbereich bündeln und dann halt damit arbeiten.
Warum ist das hier empfohlen? Nur um die Strukturierung besser zu gestalten? Weil theoretisch könnte ich auf den Byte und Bitoffset manipulieren.
Wie gesagt, Die Unions sind mir noch nicht ganz griffig...
Bisschen was hat coko oben schon geschrieben, aber naja... Mein Knoten im Hirn möchte sich noch nicht lösen.
- cad435
Kommentar
-
Zitat von cad435 Beitrag anzeigenIch vermute, dass die ps1 skripte bei euch irgendwie aus dem "Haupt"-Ordner (z.b. SEN-UP1-8xTH) ausgeführt werden.
Kommentar
-
Zitat von cad435 Beitrag anzeigenSind die XML-Unions quasi gleich?
Normal darfst du nicht mehrere Parameter an der selben Stelle speichern (auch wenn diese nicht zeitgleich aktiv sind).
Das Problem kann man mit Unions umgehen, da du dort beliebig viele Parameter drin speichern kannst.
Du kannst auch einen default Parameter angeben, der dort gespeichert werden soll, falls kein anderer Parameter in der Union aktiv ist.
Kommentar
Kommentar