Smart Home Sensorik - welche Lösung ist sinvoll?

Ok. Ich habe die PINs 6-7, 11-12, 16-17 und 21-22 als UART interpretiert. Dein Hinweis zu UART0 und UART1 zeigt mir aber, dass es einfach nur zwei Paare von den PINs genutzt werden können.

Ich habe schon den Aufsatz bestellt und warte auf die Lieferung. Wenn UART0,1 automatisch verwendet wird, werde ich damit leben können. Im Prinzip reichen mir eigentlich die zwei Schnittellen. Die wichtigsten Sensoren werde ich über die Fenster platzieren. Da habe ich zwei Kabel verlegt und geplant 2 Abstandsensoren (1 pro Fensterflügel) dazu 1 Präsenz und 1 Temp/Feuchtigkeit Sensor. D. h. ich bräuchte also pro Fenster 2 Picos und 4 Sensoren.

Alles zusammen plane ich als in eine dünne Gehäuse zu platzieren. Man kommt ohne 3D Drucker wahrscheinlich nicht drumherum, aber das ist dann halt so.

Auch wenn es nach einer praktikable Lösung aussieht, werde ich die Einschränkung lieber vermeiden. Für die Bewegungs- bzw. Präsenzsensoren will ich nach Möglichkeit immer freie Bahn haben, da sie ohnehin recht “langsam” bzw. sensibel sind.

Der Anschluss per USB will ich eigentlich vermeiden. Sonst habe ich stärkere Abhängigkeit zu dem PC, wo es ggf. noch mehr angeschlossen wird. Klein Gerät mit Cache oder Bedienung von mehreren MQTT Server zwecks Ausfall/Wartung gefällt mir besser. Es wird dann auch funktionieren, wenn ich den Hauptserver mal herunterfahren muss. USB Anschluss kann ich auch nicht über die Server mit HA Betrieb umschwenken.

Alles klar, d.h. “+” auf PIN 40 und “-” auf z.B. 38.

Ok. Dann scheue ich mich es später noch an. Da ich praktisch immer zwei Kabel nebeneinander habe, bin ich da flexibel.

Ich glaube dies wird meine Fähigkeiten leider überschreiten :confused: Je mehr Komponenten, desto wahrscheinlicher kann was ausfallen und meine überschaubare Erfahrung wird bei der Fehlersuche auch nicht helfen :confused:
Umbauen kann man beim Bedarf es immer noch. Mind. da wo sich neues Bedarf ergibt.

Dies wird leider für mich momentan zu viel, da ich nur rudimentäre Erfahrung mit löten habe und musste noch für gutes Equipment investieren und natürlich viel üben. Nicht, dass ich dafür kein Lust hätte aber irgendwann möchte ich noch die Basis in Betrieb nehmen.
Ich will Deine Zeit nicht zu stark beanspruchen, aber wenn Du Lust hast, wird mich schon interessieren, wie Du als Profi so was lösen wurdest. Insbesondere der Auswahl vom Chip und die Kriterien für den Auswahl der Komponenten wird mich schon interessieren.
Was ich immer noch im Auge behalten muss, ist leider die Anzahl. Mind. pro ein Fenster musste so ein Element gebaut werden (d. h. ca. 20 Stück…).

PS: Hättest Du vielleicht ein Link für Sensoren, die etwas besseren Qualität als die Stufe 2 haben?

Viele Grüße
bauherr

Da fällt mir was ein. Bin wohl betriebsblind. Man könnte wahrscheinlich an all diesen Pins UART Geräte anschließen und dynamisch umschalten im Code. Der Pico hat natürlich intern Multiplexer. Das macht dieses Routing erst möglich. Prinzipiell müssten so 5 UART Geräte anschliessbar sein. Ohne jegliche Zusatz Hardware. Die Einschränkung, dass man auf mehreren UART0 Geräten nicht gleichzeitig kommunizieren kann, gilt weiterhin. (Selbiges für UART1)
Das Umschalten passiert, wenn ich mich recht entsinne, in der Software Initialisierung des UART (in C) - wahrscheinlich auch in Micropython so.

Um Missverständnissen vorzubeugen: UART Sensoren müssen direkt mit dem Pico kommunizieren. Der Aufsatz ist für die Umwandlung in RS485 und kann nur von einem anderen RS485 Modul empfangen werden.

Wenn der Sensor von sich aus etwas sendet, dann funktioniert das mit dem Multiplexen nicht, das stimmt.

Ja. Auch 5V USB ist afaik mit VBUS verbunden.

Wenn der Sensor von sich aus unaufgefordert “spricht”, wäre Multiplexen keine Option. Normalerweise machen das Sensoren über Interrupts - so geben sie bescheid, dass man sie mal abfragen sollte…

Ich weiß nicht, was Stufe 2 ist. Und welchen Sensor genau?

Hi,

ich lese den Thread schon ne Weile interessiert mit… mittlerweile bin ich nicht mehr sicher, ob sich das zu einer sinnvoll zu betreibenden Lösung entwickelt.

  • Du willst Präsenz- und Bewegungsmelder: wie wirklich guten sind zwischen KNX und Modbus preislich sehr vergleichbar. Da gewinnst du nichts, ausser mehr Komplexität.
  • Fenster und Türen checken: Wenn du eh neu verkabelst, kannst entweder viele Fenster auf zentrale Binäreingänge legen, oder, wenn du die Rollläden dezentral ansteuerst, einfach Rolladenaktoren mit Binäreingang verwenden, praktisch kein Aufpreis. Auch hier gewinnst du ausser Komplexität eigentlich nichts.
  • Temperatur und Feuchte: Mittlerweile sind einige KNX Taster am Markt, die Temperatursensoren eingebaut haben. Einige wenige auch Feuchte.

Insgesamt kann ich deine Idee zwar nachvollziehen, aber bedenke, das muss alles gepflegt, aktualisiert und ggf debugged werden. Das bisschen was du an Invest eventuell sparst, geht an Maintenance und Troubleshooting mehr als drauf. Und wenn du mal keine Zeit mehr hast (Krank, Kinder, Auslandsaufenthalt, was auch immer) ist niemand da, der das pflegt.

Kostet die ETS? Ja, aber es gibt im KNX User Forum regelmäßige Rabattaktionen, da zahlst du dann noch 500€, was für einen relevanten Teil deiner Hausinfrastruktur drin sein sollte.

Denk einfach nochmal drüber nach, was du mit welchem Aufwand erreichen kannst und was das über die nächsten 10 oder 15 Jahre für den Invest und die aufzuwendende Zeit bedeutet,

Just my 2 Cents

Frank

Gefplegt, aktualisiert? Kann ich überhaupt nicht nachvollziehen. Ich pflege und aktualisiere bei mir gar nichts. Einen Sensor braucht man nicht pflegen und aktualisieren - das ist kein Betriebssystem. Einzig den Gateway, mit Internet Anbindung, müsste man ggf. mal aktualisieren. Und wenn es keine Internet Anbindung gibt, dann auch das nicht.

Das hört sich echt so an, als hätte man eine bettlägrige Person zuhause. Reden wir immer noch über verkabelte Sensoren oder geht’s jetzt um Behindertenstufe 3?
Ich muss zu meiner Schande gestehen, dass ich auch die Schuko Steckdosen bei mir nicht gepflegt und aktualisiert habe. Und meinen Switch auch nicht. Hoffe der geht noch, wenn ich mal krank bin.

Lieber Canique,

Hab ich dir was getan, bin ich dir auf die Füße getreten oder hast du einfach nen schlechten Tag, mich wegen eines Posts zwischen den Zeilen so aggressiv anzumachen? Schon mal was von Niveau und höflicher Debattenkultur gehört?

So ein Forum dient zum Austausch von Erfahrungen und Tips. Menschen wie Du, die eine andere als die eigene Meinung offenbar nicht ertragen, machen Foren im Laufe der Zeit kaputt. Braucht niemand.

Also bitte, wenn deine Meinung und Erfahrung eine andere ist, fein. Ich habe ja nicht gesagt, dass deine Ideen per se schlecht oder falsch sind, in keiner Weise. Ich möchte den Themenstarter nur zum Nachdenken über den Kontext und die Konsequenzen seiner Ideen bringen, und was er sich mit diesem Ansatz ggf. für Aufgaben ins Haus holt, die m.E. anders auch sinnvoll lösbar wären. Abgesehen davon scheint er nach eigener Auskunft nicht deine Erfahrung in Elektronik und DIY an der Stelle zu haben, was die Lösungsfindung eventuell beinflussen sollte.

Ich bin aber aus dem Thread raus, wenn das schon so unnötig destruktiv anfängt.

Have fun

Frank

1 „Gefällt mir“

Für mich hört es sich wie eine Werbung für KNX an mit an den Haaren herbeizogenen Argumenten. Ich habe aus diversen Foren Erfahrung mit KNX Vertriebsleuten und auch anderen Herstellern, die sich als “User” ausgeben, deshalb reagiere ich da genervt darauf, sobald sich etwas wie eine Werbung anhört.

Um Missverständnissen vorzubeugen: Ich werbe selbst. Aber es ist transparent. Man sieht der Name ist gleich wie die Webseite, und weiß: aha, alles klar! In Foren hat man immer verdeckte Leute dabei, die das nicht so handhaben.

p.s. teilweise gibts ganze Foren, die von einem Hersteller verdeckt geführt werden. Das Forum heißt dann smarthome-irgendwas-blabla.de - die naiven Lemminge, denken, das sei ein unabhängiges Forum und holen sich dort Rat, und komischerweise, ja wie der Zufall eben so will, werden fast nur Produkte eines Herstellers vorgeschlagen… Zufälle gibt’s! :wink:
Fun Fact: Ihr kauft diese Produkte :wink: Dieselben Produkte habe ich auch hier in diesem Forum schon gesehen…

Hmm,
schau doch mal mit welchem technischem Background (is jetzt net bös gemeint) der Threadersteller kommt.
Mit diesem Level halte ich es für ziemlich ausgeschlossen das er es schafft so eine anspruchsvolle Infrastruktur auf die Füße zu stellen und zu pflegen.
Technisch gesehen fein und eine nette Aufgabe. Aber jemandem mit so wenig Hintergrundwissen ist dann bei den Details IMHO zum scheitern verurteilt.

Von da her war die Empfehlung von Frank (die ich im übrigen voll und ganz teile) auf KNX zu setzen schon richtig.

gruß
bb

Ok, also gut, doch noch ein Nachsatz zur Klärung.

Wenn du meinen Post nochmal liest, dann fällt dir ggf. auf, dass es mir darin primär um Vereinfachung geht. Und wenn du mal in ein gewisses Alter gekommen bist, wirst du vielleicht auch irgendwann feststellen, dass man irgendwann nicht mehr mit dem selben Spaß und Elan an der Hausinfrastruktur arbeiten mag.

Ich bin Elektroniker und Wirtschaftsingenieur, seit über 25 Jahren in der IT tätig und habe bei mir im Haus seit 2008 schon so einiges verbaut und ausprobiert, u.a. Zigbee, ZWave, Enocean, Homematic/-IP, Shelly, ESP32-Systeme mit eigenen Sketchen/Tasmota/ESPHome, KNX, Modbus, Openhab, Iobroker, IPSymcon, Homeassistant, den Gira X1 und den Timberwolf. Ich denke daher, dass ich den technischen Background schon habe, um das zu bewerten was ihr diskutiert habt.

Dein technischer Input war fachlich total ok und kompetent, nie was daran ausgesetzt. Der Rahmen der Diskussion, die Zielsetzung des Themenstarters vs. des abzusehenden Aufwands war es, der mich zum Post veranlasst hat. Also auch wenn die Sensoren oder Gateways hinterher nicht gewartet werden müssen, so reden wir von mindestens 2 Bussystemen im Haus, die vermutlich ein Gateway benötigen, um die Daten sinnvoll verknüpfen zu können. Da sind wir dann wieder bei HA und der Systempflege (nein, auch ich spiele auf meine Steckdosen keine Updates ein). Mein Haus funktioniert in seinen maßgeblichen Funktionen auch bei Ausfall von HA, da ich alles Relevante direkt auf KNX realisiert habe.

Für mich ist das neben einem langjährigen, hochinteressanten Hobby aber immer mehr zu einem Teil meiner Hausinfrastruktur geworden, bei der ich auf Betriebssicherheit, minimale Administration/Pflege, möglichst simples Design und wenig Protokollvielfalt achte. Aber das sind eben meine Fokusthemen, nicht deine. Völlig akzeptiert. Aber akzeptiere bitte auch Du die meinigen.

In all den Jahren mit den verschiedenen Systemen hatte ich mit KNX eben die besten Erfahrungen gemacht und den geringsten Aufwand im Betrieb. Wenn du deine Sensoren auch nach der Installation nie mehr anfassen musst, prima. Meine Tasmotas & Co hatten nach einiger Betriebszeit immer mal wieder kleine Problemchen mit Sensorwerten oder Stabilität, worauf eben meine persönliche Erfahrung basiert (lediglich der ESP am Stromzähler läuft seit Jahren stabil).

Daher muss ich kein KNX-Werber sein, nur weil ich das System tatsächlich persönlich extrem gut finde und es für mich unter Langzeit-Betriebsaspekten zusammen mit meinen persönlichen Erfahrungen und Ansprüchen einfach die beste Lösung darstellt. Und ja, du wirst von mir einige Posts hier finden in denen ich KNX empfehle, aus genau der Brille und der Erfahrung. Und nein, wenn das noch nicht rübergekommen sein sollte, ich mache keine Werbung. Ich empfehle auf Basis meiner eigenen Erfahrung und vermutlich unmaßgeblichen Meinung.

Wenn Du auf DIY und ESP & Co stehst und das alles rückwärts und bei Nacht kannst, dann Chapeau und bleib dabei. Microcontroller sind echt mega geil und leistungsfähig geworden und kosten Centbeträge (ich hab mit Transistorschaltungen auf Lochrasterplatine angefangen, war ne andere Zeit :joy: ). Bin eben nur nicht sicher, dass der Themenstarter dein fachliches Niveau an der Stelle hat und daher ggf. eine alternative Idee mental durchkauen sollte.

Have a great day

Frank

Moin!

uhhh.. ich sehe, dass heute einige Punkte hier sehr aktiv diskutiert worden sind.
Ich gebe jetzt die Antwort im Bezug auf das KNX damit dieses Aspekt für dieses Thema abgeschlossen werden kann. Ich habe zwar in der vorherigen Beiträgen schon meine Gründe, die für mich, gegen KNX sprechen, genannt aber vielleicht muss ich es etwas genauer erklären.

  1. Das Hauptargument für mich gegen KNX ist, dass dieses System nur auf Windows Basis betrieben werden kann. Abgesehen von den Lizenzkosten (auch für weitere Software wie Schutzprogramme) hat dieses Betriebssystem für mich nur Nachteile. Der Betrieb bzw. die Wartung von Windows ist für mich nicht automatisierbar und nur für ein Windows Systeme werde ich das Thema Automatisierung für Windows nicht aufsetzten, auch wenn sicherlich dafür einige Lösungen gibt. Als Automatisierung meine ich Aufbau eines System, Installation und Konfiguration von gewünschten Software und die regelmäßige Pflege. Bei mir persönlich spielen auch die Sicherheitsaspekte eine große Rolle, die für “normalen” Anwender vielleicht gar nicht nötig sind. Wenn jemand ein Windows ohne Internetzugang versuch hat zu aktualisieren, wird wissen welche Schritte dabei nötig sind. Ich möchte bei solchen Aktionen maximal nur informiert werden, ob es geklappt hat. Die gesparte Zeit nehme ich mich um z. B. so was wie das Thema Sensorik anzugehen :slight_smile:
  2. Sofern ich es kann, versuche ich auch immer auf OpenSource Lösungen zu setzten oder mind. solche, wo ich unter die Haube schauen kann und zur Not eingreifen/optimieren kann bzw. deren Sicherheit einschätzen kann.
  3. Der Vorschlag die fertige Sensoren von KNX (o.ä) zu kaufen ist zwar bei fehlenden Spezialwissen nachvollziehbar aber die Gegebenheiten im Haus sind dafür nicht gegeben. Die Verkablung ist bereits abgeschlossen und verputzt bzw. ich habe keine Möglichkeit irgendwelche Dosen jetzt zu installieren und fertige Gehäusen (mit Sensoren) und deren (Standard-) Maß zu montieren. Mind. nicht ohne den Putz und teilweise die Wände/Dämmung anzufassen. Ich brauche auch keine Sensoren (oder Aktoren) für Rollos, da ich einfach keine Rollos habe. Ich habe mich auch für nachgebauter Detektion von offenen Fenster (Abstandsensoren) entschieden habe, weil ich an den Fenster keine Elemente drauf schrauben/kleben möchte. Paar andere (hier unwichtige) Aspekte spielen da auch noch eine Rolle. Damit schrumpft der technische Vorteil für KNX sehr stark, da KNX nicht einfach nur Sensorik ist und deren Stärken (m.M.) in der Gesamtlösung liegen. Nach meiner Recherche sind die Sensoren einfach Fertiggeräte, die man von Anfang an (inkl. Dosen) einplanen müsste. Alles andere wird nur eine Lösung mit vielen Kompromissen. Ich habe mich damals aufgrund der Gesamtkosten gegen KNX Lösung und solchem Aufbau entschieden. Jetzt werde ich mit der Entscheidung auch leben und mit der Alternativen weiter beschäftigen.
  4. Was ich aktuell brauche ist die Sensorik. Die Aktoren und deren Bedienung ist teilweise schon realisiert bzw. wird noch erweitert. KNX wäre m. M. nur dann Sinn machen, wenn man es als Gesamtlösung betrachten wurde. Aber alle “All-in-One” Lösungen haben ein großen Nachteil. Bestimmte Elemente bzw. deren Gruppen lassen sich nicht mehr tauschen/erweitern und man ist auf den Herstellen fest gebunden. Ich möchte also keine “Gesamtlösung”. Da ich aus verschiedenen Gründen die Flexibilität behalten möchte und beim Bedarf gesamte Schicht tauschen kann. Egal ob es sich um die Sensoren/Hardware, Steuerungseinheiten, Kommunikationsprotokollen oder irgendwelche Gateways handelt.

Ich hoffe die Erklärung reicht, um klar darzustellen warum ich kein KNX einsetzten werde. Mir ist aber schon klar, dass KNX es eine gute Lösung ist, die sehr viele Anforderungen erfüllt. Nicht ohne Grund wird es im professionellen Umfeld auch sehr breit eingesetzt. Für jemanden, der auf Fertiglösungen steht (mit deren Vor- und Nachteilen) und sie nur einfach, gegen etwas mehr Geld, nutzten möchte, ist es sicherlich gute Lösung.

Da ich aber die Alternative suche bin ich canique sehr dankbar, dass er sich die Zeit genommen mich dabei mit seinen Ideen und Fachwissen in diesem Thema zu unterstützen.

Bzgl. den Argument für KNX (oder ggf. für andere Lösungen/Produkte), dass wem man selber nicht die aufgebaute Lösung pflegen kann oder sie starke Einschränkungen beim bestimmten Situationen bereiten wird, wenn jemand z. B. nicht da ist oder nicht die Lösung warten kann, ist m.M. größte Irrtum und ich verstehe, warum dieses Argument als Vertriebsargument gesehen wird.
Das was zählt sind die Anforderungen, gewählte Architektur, getroffene Entscheidungen und ausgewählte Maßnahmen bzw. deren Umsetzung. Dies ist vollkommen unabhängig von den Produkten. Einige wie KNX bringen sicherlich viel richtiges mit, aber es heißt lange nicht, dass die Anforderungen mit anderen Lösungen nicht zufriedenstellend umsetzbar sind. So was wie HA (high availability) oder Abhängigkeiten zu anderen Geräten/Komponenten im Haus lässt sich von Anfang an berücksichtigen. Selbst wenn mir die Sensorik und ganze Smart Home Monate lang ausfallen wird, was passiert es dann? Ich werde einfach so, wie die restlichen 99% (?) alle Hausbewohner leben müssen. Dies ist für mich ok. Für mich ist Smart Home nur gewisse Bequemlichkeit und Spaß woran ich basteln kann, nichts anders.

Jetzt noch ein Punkt, der auch wohl gewisse Grund war, warum für mich eben KNX die bessere Lösung sein sollte oder eher mehr die Alternative, die ich nach der Idee von canique aufgrund fachliches Niveau nicht das geeignete für mich wäre.
Erstmal ja, ich kenne mich mich mit hardwarenahen Komponenten nicht gut aus und ja ich habe so gut wie keine Erfahrung mit deren hier sicherlich breit diskutierten hardwarenahen Lösungen. Deswegen habe ich aber in diese Forum beigetreten, um von das Wissen der Teilnehmer was lernen und mein Wissensstand erweitern.
Wenn ich aber über die Schicht des Hardware rüber komme, bin ich der Meinung, dass ich früh oder später meine Lösung hinbekomme. Ich bin auch der Meinung (wenn es gerade nicht Assembler sein muss), dass ich mich mit Programmieren hinreichend gut auskenne, um weiter zu kommen. Im Kontext der IT muss ich also für mich nicht zwingend eine Fertiglösung sein.

zaphood Du hast so viel Erfahrung und umfangreiches Wissen. Bringt doch bitte einfach Deine Ideen in das Thema mit rein! Solange ich noch beim Entwickeln bzw. Ausprobieren bin und keine Entscheidungen getroffen habe, bin ich für jegliche Ideen dankbar und alle können gerne mitmischen bzw. ins Austausch gehen.
Wenn noch welche Gegebenheiten oder Anforderungen unklar sind, gerne einfach fragen!

Viele Grüße
bauherr

Hallo Bauherr,

dann habe ich deine Frage missverstanden und entschuldige mich für den Leseaufwand.

Deine Ausführungen bezüglich KNX sind zwar m.E. in vielen Teilen nicht korrekt, aber da es für dich ohnehin nicht in Frage kommt, ist das nun irrelevant :wink: Aus mir noch unklaren Gründen gibt es von erstaunlich vielen Menschen jede Menge Missverständnisse und geradezu Ablehnung (Feindbilder fast schon) ggü. KNX, die ich nie verstanden habe. Aber wie gesagt, du hast das ja abgehakt, so sei es.

Dass Du zunächst alles verkabelt und verputzt hast, und nun erst im zweiten Schritt in die Grundlagen der Lösungsfindung einsteigen willst, geht mir irgendwie nicht in den Kopf. Aber ich drück dir auf jeden Fall die Däumchen, dass du was Gutes an den Start bekommst.

Soweit ich das verstehe, wirst du nur 4 Adern an den Sensoren haben, und das auch nicht exklusiv sondern eben als Bus? Also Modbus oder Canbus, aber das hattet ihr ja schon (ist m.E. für den Einsatzzweck aufgrund der Komplexität der Geräte eher ungeeignet. Du suchst eher was mit “dummen” Sensoren). Sind beides bekannte und weit verbreitete Busse, aber als Home-Sensorzentrale ist mir da leider nichts bekannt (weder OOB noch OpenSource). Ist schon etwas älter und einige Links gehen nicht mehr, aber vielleicht hilft dir das bei der Lösungsfindung: Hausbus – Mikrocontroller.net

Wie genau muss ich mir das hier vorstellen: “Ich habe mich auch für nachgebauter Detektion von offenen Fenster (Abstandsensoren) entschieden habe, weil ich an den Fenster keine Elemente drauf schrauben/kleben möchte“? Was sind “Abstandssensoren” bei dir genau? Ultraschall- oder Radarsensoren? Aber egal was, irgendeinen Sensor musst du doch immer anbringen? Verstehe deinen Ansatz gerade nicht so richtig.

Du schreibst, du willst “über die Schicht der Hardware rüber kommen”. Leider ist es genau diese Ebene, die zentrale Aspekte dessen definiert, was überhaupt gebaut werden kann. Du wirst da also erst mal einen Architektur- und Protokoll-Ansatz finden müssen, der zur bereits geschaffenen “Verkabelungsrealität” passt.

Was ich inhaltlich auch nicht verstehe: “ich habe keine Möglichkeit irgendwelche Dosen jetzt zu installieren und fertige Gehäusen (mit Sensoren) und deren (Standard-) Maß zu montieren.” Wo enden denn die Kabel dann und wo sollen denn die Sensoren künftig mechanisch sitzen? Kann mir das gerade nicht bildlich vorstellen.

So wirklich für mich sinnvolle, alternative Ansätze fallen mir bei der gegebenen Situation und den offenbar fehlenden Dosen leider nicht ein. Ich denke daher, das wird dann auf die Variante löten und DIY hinauslaufen, so wie das cantique schon sehr gut aufgezeigt hat. Ob du das alles fachlich kannst, mag ich nicht beurteilen. Vermutlich wirst du das dann eben lernen müssen :wink: (oder doch noch auf Funk umsteigen?).

Inspirationen für Selbstbau fndest du übrigens hier sehr gute: https://www.youtube.com/@AndreasSpiess

https://www.youtube.com/@SuperHouseTV

https://www.youtube.com/@adafruit

https://www.youtube.com/@EdisTechlab

Nein, ich mache weder Werbung noch bin ich mit einem der Kanäle ode Youtube verbunden. Das sind nur einige der Kanäle die mir über lange Jahre super Inspirationen gebracht haben.

Cu
Frank

Eigentlich habe mich schon darüber Gedanken gemacht. Ich muss aber sagen, dass die Planung des Bauvorhabens vor ca. 6 Jahren war. D. h. es hat sich von der verfügbare Technik auch einiges geädert.
Ich habe damals auch grobe Prototyp mit Raspi gebaut und es hat (min. mit den Temperatursensoren alles soweit funktioniert. Der Fehler liegt aber daran, dass ich die Verfügbarkeit von den Sensoren schlecht geprüft habe und bin davon ausgegangen, dass ich mit 1-Wire und deren Sensoren gut auskomme.

Richtig, genau genommen Handvoll Buse mit “Bustopologie”. Diese kann ich, aber nicht muss noch dann zum Baum zusammen verbinden.

Ja dies wäre die beste Lösung mit den “dummen” Sensoren, die ich abfragen könnte. Wegen der Anzahl wird es eben nicht funktionieren. Deswegen jetzt die Idee mit den Mikrokontrollern, die zwischen den Sensoren und der Leitung zwischengeschaltet werden und als Modbus-Slaves dienen sollten.
Bzgl. der Zentrale mach ich eigentlich keine Große Gedanken. Wenn der der Modbus-Master die Slave bedienen kann und ich auf dem Master die Ergebnisse an MQTT schicken kann, wird das Rest eher unproblematisch. MQTT kann ich auch von HA bedient werden. Zur Not könnte es ein Pico oder ESP mit WLAN sein, wobei ich eher was mit LAN Anschluss präferieren werde. So mind. die Idee.

I2C wäre sicherlich gute Lösung, aber wegen der Einschränkung bzgl. Kabellänge leider ungeeignet. Der längste Bus hat mind. 30m.

Die Idee ist über dem Fenster kleine Kasten zu montieren, wo unter anderem zwei Abstandssensoren in Richtung der Fensterflügel gerichtet werden. Ultraschall scheint erstmal eine machbare Lösung sein. Ich werde aber was anderes ausprobieren, damit ich den Fledermäusen keine dauerhafte Frontbeschallung schicke.
In diese Kasten kann ich zwei Kabel mit den 4 Adern anschließen. Daran die Picos und an die Picos die Sensoren.

Sensoren (UART) → Pico → Modbus-Konverter (Modbus-Slave) → Leitung → Modbus-Master

Im Prinzip wie es schon canique skizziert hatte.

Genau deswegen habe ich dieses Thema hier aufgemacht, um mögliche Einsätze zu diskutieren :slight_smile:

Dies hat leider mit den Brandschutzvorgaben was zu tun. Ich habe als Dämmung ein natürliches/brenbares Material und ich darf darein keine Dosen montieren. Mind. ist es die Vorlage für Stromdosen.Für die Sensoren wäre es wahrschienlich nicht gelten, aber ich will das Risko nicht angehen. Deswegen dürfen es nur Aufputzdosen sein. Die Kabeln stecken einfach direkt aus dem Lehmputz raus. Der angedachte “Kasten” soll dann auf dem Putz geschraubt/montiert werden.

Dies berührte ich auch :slight_smile: Funk ist meine letzte Backup Lösung :wink:
Da die Picos und andere Teile bereits gekommen sind, ist mein derzeitige Plan erst paar Sensoren an Pico anzuschließen und die Daten über UART auslesen. Dann kommt der RS485 Konverter drauf und ich schaue weiter wie ich in die Richtung Modbus komme. Wenn ich zwei solche Baugruppen schaffe, werde ich versuchen irgendeine Kommunikation über Modbus hinzubekommen. Wenn dies gelingt, nehme ich dritte Pico mit WLAN und versuche sie zum Modbus-Master zu erklären und mit den zwei Slaves sprechen lassen so wie am Ende die Ergebnisse an MQTT-Server zu schicken.
Wenn dies mir gelingt, werde ich mich Gedanken machen wir ich ein Testgerät herstellen kann. Vielleicht wäre da eine Platine viel geeigneter als Kabelsalat. Bis dahin muss ich aber noch kommen.

Danke für die Links!
Bei “EdisTechlab” habe ich schon mich einiges angeschaut. Die restlichen ziehe ich mich noch rein :wink:

Viele Grüße
Bauherr

Danke für die Infos. Wundere mich zwar immer noch über das Konzept, aber egal, nicht mein Haus :wink:

Spontane Idee:

Wenn du nicht löten willst / kannst dann würde ich vlt mal Analog- oder Digital-to-Modbus-Konverter vom guten Ali ausprobieren, sowas hier z.B.: KLICK

Da musst halt suchen, welche Baugrößen und Varianten es gibt (und in deine AP Kästen passen), hab nur mal einen exemplarisch rausgesucht. Daran dann deine Sensoren. Temp. und Feuchte sowie Binäreingänge sollten damit theoretisch einfach mit analogen Sensoren gehen.

Abstandssensoren liefern oft ein 0-10V Signal, dafür gibts auch passende Konverter. Also pro Fenster eben ein bis mehrere solcher Konverter (je nach dem wieviel verschiedene Inputtypen du brauchst) an den Bus. Dann bitte alle Stränge als einzelne Busse belassen, weil die nicht zum Stern verschaltet werden dürfen!

Am Ende jedes Strangs könntest dann einfach einen Waveshare anbauen (sowas z.B. KLICK) der macht dann aus Modbus RTU noch Modbus TCP, was sich dann simpel in HA anlegen lässt (diese USB Modbus RTU USB Adapter sind zwar billiger aber ein elendes Gebastel).

Da das alles Hilfsspannungen benötigt und du das alles bis zu 30m weit schleppen musst, mag ich nicht ausschliessen, dass du da ggf auch Probleme bekommst. Eventuell muss dann pro Strang ein ausreichend dimensioniertes Netzteil dran und pro AP Kasten ein Spannungsregler zur Stabilisierung rein. Denk dran, die Versorgungsspannung höher auszulegen (8 oder 12V) um die dann bei jedem Spannungsregler auf die erforderlichen (meist 5V) runterzuregeln.

Wilde Konstruktion, aber bei den Gegebenheiten das Beste was mir spontan einfällt, bei dem man nicht das überragende Fachwissen (meine ich ernst) von cantique benötigt :wink: Wobei die Lösung mit dem Pico mit Sicherheit viel billiger wäre, aber eben komplett DIY mit so einigen Stolperstellen.

Ob Ultraschall- oder Radarsensoren aber ausreichend genau und vor allem stabil genug sind, um einen Fensterzustand zu erkennen, da habe ich meine Zweifel. Temperaturunterschiede der Luft reichen da schon aus, um die Messung zu versetzen und der Fensterstatus stimmt nicht mehr. Hättest mal einfach ein paar Magnetschalter in die Fensterrahmen verbaut… ich fürchte, am Ende wirst doch irgend eine Art von Magnet pro Fenster drankleben müssen…

Cu
Frank

ps: Schon mal ne KI befragt, wie die das bauen würde? Da kommen oft ganz brauchbare Ideen bei raus. Kann gerne das Ergebnis von Gemini hier posten, wenn das von Interesse ist (und wenn ich deshalb keinen Stress mit dem Mod bekomme)

:crayon:by HarryP: Riesenlink “verpackt”

Ultraschall könnte schon funktionieren, ist aber sensibel bei manchen Materialien.

Was schlecht ginge, wäre IR Abstandsmessung. Das reagiert empfindlich auf IR Umgebungslicht (=Sonne, Wärme) → dadurch reduziert sich die Reichweite erheblich. Außerdem ist es empfindlich auf bestimmte Farben. Manche Farben gehen besser als andere. Für sehr kurze Distanzen könnt’s klappen.

Die Picos gibt’s übrigens auf Aliexpress günstiger. Habe ich aber noch nie probiert.

Danke für die Links!
Gerade die Idee mit dem Umwandler von Modbus TCU nach TCP finde ich sehr gut. Ich bin nur nicht sicher, ob es spannungsmäßig die Variante mit Pico oder ESP und direktem Versand auf MQTT nicht einfacher wird. Ich sparre dann die gesamte Schicht mit dem Modbus TCP. Abgesehen davon, dass es irgendwas (z. B. NodeRED) noch empfangen muss. Deren Betrieb habe ich zwar geplant aber vielleicht es gar nicht nötig wird.

USB als zentrale Empfangsstelle will ich eigentlich vermeiden, damit ich die Daten auf verschiedene Systeme schicken kann, bzw. auf eine VM, die ich zwischen Proxmox Hosts schwenken kann. Mit USB wäre es schwer schwenkbar.

Danke für die Hinweise! Ja, da weiß ich, dass es nicht einfach wird. Dieses Thema will ich aber noch kurz zurückstellen bis ein Prototyp bzw. Testgerät gebaut ist.

Dies ist guter Hinweis! Ich habe IR Sensor (HW-201) ausprobiert und mit mäßigem Erfolgt. Den HC-SR04 funktioniert dafür aber recht gut. Natürlich muss man schauen, wie es dann ggf. auf Glas etc. reagiert.

Zwischenstand:
Mit dem Quellcode komme ich aktuell eigentlich recht gut weiter. Die Sensoren lassen sich problemlos über reichwählbare GPIOs mir der Bibliotheken von Micropython gut anbinden. Leider der DHT22 arbeitet intern mit 1wire. Der Vorteil ist, dass die Sensoren einfach irgendwo einschließen kann, wo kein UART<->Modbus laufen wird. Nachteil: es kann nicht einfach nur über UART kommunizieren. Dies lässt sich aber softwareseitig einfach lösen.

Wo ich aber aktuell erhebliche Probleme habe, ist das Steckbrett vernünftig mit der Spannung zu versorgen bzw. diese zu verteilen. Selbst wenn ich ein Labornetzteil mit regelbarer DC Ausgabe nehme, kommt es an Brett an (gemessenen) aber irgendwie geht es nicht durch. Bei den nächsten Kabel kommt 0V raus :confused:
Auch die ansteckbare FF-Kabeln machen oft Probleme. Sie werden plötzlich locker und der DHT22 will dann gar nicht mehr sprechen. Ich habe schon das Steckbrett getauscht und neue Kabel genommen, aber früh oder später funktioniert es nicht mehr.
Wenn ich die Sensoren direkt mit FF-Kabeln und pico zusammenschalte, funktioniert es gut aber auch nicht immer 100% zuverlässig.

Hat jemand Idee, woran das Problem liegen kann? (Steckbrett und Kabeln sind von az-delivery).

Fragen:
Gibt es nicht etwas stabile Lösungen als diese Steckkabel? Ich habe so was gefunden, wo mind. erkennbar wird, ob die Kommunikation mit GPIO funktioniert und damit die Fehlersucher einfacher wird.

Auf jedem Fall sind die steckbare Kabeln recht instabil und die Suche warum gerade der Sensor nichts liefert ist bei 3-4 Kabeln jedes mal ein Rätsel…

Man kommt also mit der Ziellösung ohne löten nicht drumherum, wenn die Kabelverbindung so viel Probleme bereiten. Deswegen die nächste Frage ist, welche Lötkolben bzw. Lötstation wurdet ihr für solche Elektronik-Bastelei (z.B. mit PCB Board) empfehlen? Im Forum habe ich erstaunlicherweise nichts dazu gefunden.
Ich hatte schon mal vor zwei Monaten so was gehabt, was auch insgesamt eine 1h gut funktioniert hatte, aber danach war die Temperatur nicht mehr stabil. Man könnte sie gut bedienen und gerade der Halter mit der Lupe war zwar nichts besonders, aber schon sehr hilfreich.

Viele Grüße
Bauherr

Ersa Pico - kostet aber ~180€

Sollte nicht sein - sie sind zwar nicht für den Dauergebrauch, aber normalerweise ist der Kontakt elektrisch ok.

Da passt wahrscheinlich was am Setup nicht. Das ist ziemlich sicher kein Fehler am Steckbrett.

Thema Lötkolben: Vergiss diese aufgemotzten China Teile mit dem ganzen Geraffel dran.
Ein ordentlicher Lötkolben ist von Weller, Ersa, oder JBC tools.
Gaanz wichtig ist das es auch noch nach Jahren Ersatzlötspitzen gibt. Digitale temp Anzeige, Lupe, Halter, Absaugung - alles unnützer Tineff, genug Leistung, ein hochflexibles Kabel und tauschbare Spitzen - mehr brauchst net.
Falls du am Gebrauchtmarkt eine alte WECP20 findest - zuschlagen. Obwohl 30 Jahre alt kannst da immer noch gerne 100€ dafür zahlen.

Steckbrett: Gibt gute und schlechte gibt auch schlechte viel zu steife Dupont Kabel. Ich bastel viel hab die Steckbretter genau wegen diesen Problemen so ziemlich aufgegeben. Arbeite meißt auf Lochraster in Fädeltechnik oder wenn sichs lohnt dann mach ich gleich eine Platine. Prototypen einfach fliegend als Lötigel aufgebaut.

DHT22: der hat zwar nur einen Datenpin, ist aber trotzdem kein 1Wire kompatibler Baustein.

zu deiner Abstandsmessung: schau mal nach den TOF Sensoren bis 2-3 Meter gehen die ziemlich gut- für den Nahbereich (wenige cm) sind Hallsensoren das mittel der Wahl. Mit modernen 3D Hall kannst damit die Lage eines Magneten im 3Dimensonalen Raum bis auf den mm genau bestimmen.

Aber ganz ehrlich - und net böse sein- Mit deinen offensichtlich nicht vorhandenen Elektronikkenntnissen wirst du kaum Chancen haben das Projekt vernünftig umzusetzen. Es reicht ja nicht wenn es am Basteltisch tut, es soll ja auch jahrelang zuverlässig und robust im 0/24 Einsatz laufen uns das ist nochmal eine ganz andere Nummer.
Backe kleinere Brötchen, vor allem verabschiede dich von der ganzen Bus Idee und setze lieber auf Fertigbauteile.

greez
bb

1 „Gefällt mir“

Moin!

Danke für die motivierende Wörte.

Da ch noch auf paar Equipemntteile warte, habe ich inzwischen für die geplante Applikation ein Protytyp der Software-Basis geschrieben. Neben Demo-Sensor, welchen ich für Testzwecke nutze, ist aktuell der interne Pico Temperatursensor und HC-HR501 über json-Datei konfigurierbar. Sicherlich gibt es im Quellcode noch paar Fehler, aber für diese Phase reicht erstmal für mich.
Als nächstes plane ich die Kommunikation über Modbus zu implementieren und dann weitere Sensoren… soweit ich was zusammengelöttet bekomme :wink:

Falls keine Interesse an dem Quellcode gibt, werde ich das Forum natürlich nicht noch mal vermüllen.

Datei: config.json

{
    "system" : {
        "loop_time": "1.0"
    },
    "board": {
        "name": "Steckbrett",
        "location": "Labor",
        "device": {
            "model": "breadboard"
        },
        "microcontroller": {
            "name": "Raspberry Pico 2",
            "location": "Steckbrett",
            "device" : {
                "model": "PICO2",
                "pinout": {
                    "22":{
                        "$ref": "#/board/sensors/3/device/pinout/2",
                        "logical_pin": 17,
                        "desc": "GP17"
                    }
                }
            }
        },
        "sensors": {
            "1": {
                "disable": "yes",
                "device" : {
                    "model": "DEMO"
                },
                "name": "Demo-Sensor",
                "location": "Demo-Raum"
            },
            "2": {
                "device": {
                    "model": "RP2050"
                },
                "name": "Pico Temperatur",
                "location": "pico2 chip"
            },
            "3": {
                "disable": "yes",
                "device": {
                    "model": "HC-SR501",
                    "pinout": {
                        "1":{
                            "desc": "VCC"
                        },
                        "2":{
                            "$ref": "#/board/microcontroller/device/pinout/22",
                            "function" : "out_pin",
                            "logical_pin" : "17",
                            "desc": "OUT"
                        },
                        "3":{
                            "desc": "GND"
                        }
                    }
                },         
                "name": "Präsenz im Raum",
                "location": "Steckbrett GP17"
            }
        }
    }
}

Datei main.py

from bootloader import Bootloader, ShutdownException, RebootException

system = None

def start() -> None:
    try:
        system = Bootloader()
        system.start()

    except ShutdownException as e:
        print('The system is shutting down...')
    except RebootException as e:
        print('The system is restarting...')
        system = None
        system = Bootloader()
        system.start()
    else:
        print('The system is up.')
    finally:
        print('The system is down.')

start()

Datei bootloader.py

import devices
import json
import time
import re

class ShutdownException(Exception):
    pass

class RebootException(Exception):
    pass   

class Bootloader:
    config_path : str
    board : devices.Board
    def __init__(self, config_path : str = "./config.json") -> None:
        self.config_path = config_path

    def _read_config(self) -> None:
        with open(self.config_path) as f:
            self.config = json.load(f)

    def _create_port(self, number : str, json_data) -> devices.Port:
        lp = -1
        if "logical_pin" in json_data:
            lp = int(json_data["logical_pin"])
        func = ''
        if "function" in json_data:
            func = json_data["function"]
        dsc = ''
        if "desc" in json_data:
            dsc = json_data["desc"]
        return devices.Port(physical_pin=int(number), logical_pin=lp, function=func, desc=dsc)

    def _create_pinout(self, json_data) -> devices.Pinout:
        pinout = devices.Pinout()
        for key, value in json_data.items():
            pinout.add_port(self._create_port(key, value))
        return pinout

    def _create_device(self, json_data) -> devices.Device:
        device = devices.Device(model=json_data["model"])
        for k, v in json_data.items():
            if k == "pinout":
                device.set_pinout(self._create_pinout(v))
                break
        return device
    
    def _create_microcontroller(self, json_data) -> devices.Microcontroller:
        microcontroller = devices.Microcontroller(name=json_data["name"], location=json_data["location"])
        microcontroller.set_device(self._create_device(json_data["device"]))
        return microcontroller
    
    def _create_sensor(self, json_data) -> devices.Sensor:
        d = self._create_device(json_data["device"])
        args = ''
        if "pinout" in json_data["device"]:
            args = d.get_pinout().get_functions()
        sensor_class = 'devices.'+re.sub('[^a-z0-9]', '', json_data["device"]["model"].lower())+'('+args+')'
        sensor = eval(sensor_class)
        sensor.set_name(json_data["name"])
        sensor.set_location(json_data["location"])
        sensor.set_device(d)
        return sensor
    
    def _create_board(self, json_data) -> devices.Board:
        board = devices.Board(name=json_data["name"], location=json_data["location"])
        board.set_device(self._create_device(json_data["device"]))
        for id, v in json_data["sensors"].items():
            if 'disable' in v and v["disable"] == "yes":
                continue
            else:
                board.add_sensor(self._create_sensor(v))
        return board

    def _run(self) -> None:
        loop_time = float(self.config["system"]["loop_time"])
        self.board = self._create_board(self.config["board"])
        while True:
            self.board.print_info()
            time.sleep(loop_time)

    def start(self) -> None:
        self._read_config()
        self._run()
    
    def shutdown(self) -> None:
        raise ShutdownException("Hard system shutdown.")

    def reboot(self) -> None:
        raise RebootException("System reboot.")

Datei: devices.py

from machine import ADC, Pin
from random import uniform, choice, randint
import time

class Port:
    physical_pin : int  # e.g. by pico2 21
    logical_pin: int    # e.g. by pico2 16
    desc : str          # e.g. by pico2 GP16
    function : str
    def __init__(self, physical_pin : int, logical_pin : int, function : str = '', desc = '') -> None:
        self.physical_pin = physical_pin
        self.logical_pin = logical_pin
        self.desc = desc
        self.function = function
    def has_function(self) -> bool:
        if len(self.function) > 0:
            return True
        return False
    def get_function(self) -> str:
        return self.function
    def get_logical_pin(self) -> int:
        return self.logical_pin

class Pinout:
    pins : list[Port] = []
    def __init__(self) -> None:
        pass
    def add_port(self, port : Port):
        self.pins.append(port)

    def get_functions(self) -> str:
        args = ''
        c = 0
        for port in self.pins:
            if port.has_function():
                a = port.get_function() + ' = ' + str(port.get_logical_pin())
                c = c + 1
                if c > 1:
                    args = args + ', ' + a
                args = a
        return args

class Device:
    model : str
    pinout : Pinout
    def __init__(self, model : str) -> None:
        self.model = model
    def SerialNum(self) -> int:
        return hash(self)
    def set_pinout(self, pinout : Pinout):
        self.pinout = pinout
    def get_pinout(self) -> Pinout:
        return self.pinout

# --------------------------------------------------------------------------- #
#                         ----- MICROCONTROLLERS -----                        #
# --------------------------------------------------------------------------- #

class Microcontroller:
    name : str
    location : str
    def __init__(self, name : str, location : str) -> None:
        self.name = name
        self.location = location
    def set_device(self, device : Device) -> None:
        self.device = device

# --------------------------------------------------------------------------- #
#                         ---------- SENSORS ---------                        #
# --------------------------------------------------------------------------- #

class Sensor:
    name : str
    location : str
    device : Device

    def set_device(self, device: Device) -> None:
        self.device = device
    def set_name(self, name: str) -> None:
        self.name = name
    def set_location(self, location: str) -> None:
        self.location = location

class Temperature:
    def get_temperature(self) -> float:
        return 0.0

class Presence:
    def get_presence(self) -> bool:
        return False
    # return timestamp of last detection
    def get_presence_time(self) -> int:
        return 0
    # return tuple timestamp of last detection and presence state
    def get_presence_info(self) -> list:
        return [0, False]

class demo(Sensor, Temperature, Presence):
    def __init__(self) -> None:
        super().__init__()
        self.device = Device('DEMO-DEVICE')
        self.name = 'demo sensor'
        self.location = 'demo'

    def get_temperature(self) -> float:
        lower = -40.00
        upper = 180.00
        return round(uniform(lower, upper), 2)

    def get_presence(self) -> bool:
        sequence = [True, False]
        return choice(sequence)
    
    def get_presence_time(self) -> int:
        lower = time.time() - 120
        upper = time.time() - 10
        return randint(lower, upper)
 
    def get_presence_info(self) -> list:
        return [self.get_presence_time(), self.get_presence()]
    
    def __str__(self) -> str:
        s = "\t/"+self.location+"/"+self.device.model+"/"+self.name+"/temperature/"+str(self.get_temperature())
        s = s+'\n\t'+"/"+self.location+"/"+self.device.model+"/"+self.name+"/presence/"+str(self.get_presence())+"/time/"+str(self.get_presence_time())
        return s

class rp2050(Sensor, Temperature):
    sensor : ADC
    def __init__(self) -> None:
        adc_pin = 4 # internal temperature sensor in RP2050 chip
        self.sensor = ADC(adc_pin)
        self.device = Device('RP2050')
        self.name = 'pico internal'
        self.location = 'onboard'
 
    def get_temperature(self) -> float:
        adc_value = self.sensor.read_u16()
        volt = (3.3/65535)*adc_value
        temperature = 27 - (volt - 0.706)/0.001721
        return round(temperature, 2)

    def __str__(self) -> str:
        return "\t/"+self.location+"/"+self.device.model+"/"+self.name+"/temperature/"+str(self.get_temperature())
    
class hcsr501(Sensor, Presence):
    motion_detected : bool = False
    detection_timestamp : int = 0
    gpio_pin : Pin

    def _callback(self, *args) -> None:
        self.detection_timestamp = time.time()
        if self.gpio_pin.value() == 1:  # motion detected
            self.motion_detected = True
        else:
            self.motion_detected = False
            
    def __init__(self, out_pin : int) -> None:
        if out_pin == 16:
            raise ValueError('pin.irq no support this GPIO pin:', out_pin)
        else:
            self.gpio_pin = Pin(out_pin, Pin.IN)
            self.gpio_pin.irq(trigger=(Pin.IRQ_RISING | Pin.IRQ_FALLING), handler=self._callback)

        self.device = Device('HC-SR501')
        self.name = 'PIR'
        self.location = 'somewhere'
            
    def get_presence(self) -> bool:
        return self.motion_detected
    
    def get_presence_time(self) -> int:
        return self.detection_timestamp
    
    def get_presence_info(self) -> list:
        return [self.detection_timestamp, self.motion_detected]
    
    def __str__(self) -> str:
        return "\t/"+self.location+"/"+self.device.model+"/"+self.name+"/presence/"+str(self.get_presence())+"/time/"+str(self.get_presence_time())
   
 
# --------------------------------------------------------------------------- #
#                         ---------- BOARDS ----------                        #
# --------------------------------------------------------------------------- #

class Board:
    name : str
    location : str
    sensors : list[Sensor]

    def __init__(self, name : str, location : str) -> None:
        self.name = name
        self.location = location
        self.sensors = []

    def add_sensor(self, sensor : Sensor) -> None:
        self.sensors.append(sensor)

    def set_device(self, device : Device) -> None:
        self.device = device
    
    def set_microcontroller(self, microcontroller : Device) -> None:
        self.microcontroller = microcontroller

    def __str__(self) -> str:
        return "\ninfo/"+self.location+"/"+self.name
    
    def print_info(self) -> None:
        if self.sensors.count == 0:
            print("board have not any sensors")
            return 
        print(str(self))    
        for s in self.sensors:
            print(str(s))

Beispiel Ausgebe:

Viele Grüße
Bauherr

Hallo zusammen,

inzwischen bin ich soweit, dass das geplante System auf dem Steckbrett gut funktioniert. Die Kommunikation bzw, Austausch der Nachrichten über die RS485 funktioniert auch aufwandfrei.
Ich muss es aber noch mit längerer Leitung und mit mehrere Boards (>2) testen. Die Anbindung an MQTT fehlt mir auch noch, dies ist aber eher Kleinigkeit für die Pilotphase.

Ich habe mich entschieden, die gesamte Lösung als PCB zu herstellen und habe angefangen im KiCad ersten Entwurf zu erstellen.
Als Zwischenschritt möchte ich aber als Test-Board PCB mit Lochrastersystem mit den angedachten Teilen bestücken, um u.a. auch mehr Übung mit Löten zu bekommen.

Jetzt ist der Punkt gekommen, wo ich genauer die Spannungsversorgung u.ä. konzipieren muss und dazu habe ich noch paar Fragen.

  1. Ich habe bei der Stellen, wo die Sensoren platziert werden 2 grüne KNX Kabel mit dem Abstand von ca. 6-7cm. Für die aktuelle Lösung brauche ich technisch aber nur ein Kabel. Wenn man den zweiten Kabel als Backup-Leitung verwenden möchte (beide Kabel sind aber mit Bus-Topologie ohne hin verbunden), kann ich gleich beide Kabel an die Platine anschließen und die Platine für den Betrieb mit 2 Kabeln entwerfen. Wenn es gehen wird, werde ich gerne es so machen, dass es eine zweiteilige Gehäuse wird und die Kabel über steckbare Stecker verbunden werden, so dass für Abnehmen der Platine keine Schrauben gelöst werden müssen bzw. die zweite Teil der Gehäuse mit der Platine nur reingeklickt wird. Gefunden habe ich dafür 4-Pin PCB Stecker ( RUNCCI-YUN 10 Pairs 5.08 mm Straight 4-Pin PCB Screw Terminal Connector Pluggable Type + 5.08 mm Pitch 2 Pins Plug-in Screw PCB Terminal Block Connector Right Angle (10 Pairs) : Amazon.de: DIY & Tools ). Gibt es dafür nicht bessere und kompaktere Lösung? Ich habe mal kurz RJ-11 überlegt aber 0,8mm2 passt da leider nicht rein. Habt ihr für sowas Ideen, Meinungen oder Lösungsvorschläge? Falls die Info hilfreich wird, werde ich eine Variante der Platine mit Batteriebetrieb entwerfen. Da kommt wahrscheinlich F/M Jack Stecker zum Einsatz.
  2. Ein Sensor und die Pico brauchen 5V Spannung, der Rest kommt mit 3,3V klar. Die Sensoren bzw. weitere Elemente, die mit Pico verbunden werden brauchen max. 139mA. D. h. eine Stromversorgung durch Pico selbst (liefert bis 300mA) wäre möglich. Separate Leitungen sind aber möglich und wahrscheinlich empfehlenswert? Wenn ja, wäre es heißen, dass ich eine Leitung mit 5V und eine mit 3,3V brauche, wenn man Backup-Kabel haben möchte dann insgesamt sind es 4 Spannungsleitungen. GND wird man wahrscheinlich ohnehin zusammenschalten? Sind die Gedanken richtig? Hat jemand besseren Vorschlag?
  3. Da es mehrere Geräte auf dem Bus betrieben werden und die Leitung einige Meter hat, muss ich die Spannung etwas erhören und mit Spannungsregler arbeiten. Gefunden habe Gleichspannungsregler Step Down Wandler 4.5 V-12 V auf 3.3 V/5 V 800 mA Einstellung des Netzteilreglers (5, Volt) : Amazon.de: Gewerbe, Industrie & Wissenschaft . Er kann aber ±0,05V Fehler liefern. In der Spezifikation von Pico ist solche Fehler noch erlaubt. Der ein Sensor (HC-SR501) kann nach oben bis 20V, ob 4,95V reicher werden, muss ich testen. Ich schätze aber, dass solche Fehler in akzeptablen Niveau liegt? Oder sollte man was besseres suchen?
  4. Wo ich noch recht unsicher bin, ist was ich noch neben den Spannungsregler eigentlich brauche. Erste Gedanke sind zwei solche Regler zu verwenden und mit dem ersten Regler die Eingangsspannung aus dem Kabel (ca. 6-7V?) auf 5V zu regulieren, dann die Spannung auf zwei Strecken aufteilen und mit nächstem Regler von 5V auf 3,3V zu drosseln. Insgesamt also 4 Spannungsregler (falls man die Backup-Leitung haben möchte). Ich denke, dass man aber vor dem ersten Regler eine Sicherung braucht, falls mehr als 12V kommen sollte? Wurde man noch (mind. nach dem 2 Regler vor den Sensoren) ein Kondensator für die Stabilisierung der Sensoren platzieren? Oder haben die fertige Regler ohnehin schon sowas im Bauch? Wie wurde solche Kette von Elementen für die Spannungsversorgung (5/3,3V) am besten aussehen?
  5. Gibt es eine Lösung noch den Stromverbrauch direkt bei dem Spannungsleitung dauerhaft zu messen? D. h. mit einem Modul o.ä? Wenn ich mich nicht irre kann Pico deren Stromverbrauch von den angeschlossenen Sensoren (an 3V3 Pin) messen. Bei dem externer Spannungsversorgung wäre es dann nicht mehr möglich.
  6. Die letzte Frage bezieht sich eher auf die vorgeschlagene Pico-2CH-RS485 für die Kommunikation zwischen den Geräten. Kennt jemand solcher Konverter ohne F-Header, was man dann auflöten kann? Ich habe nur was gefunden, nur ein Kanal hat, d.h. ich musste dann zwei solche Geräte pro Platine haben, da ich gerne Full-Duplex Kommunikation haben möchte.

Am Ende noch zwei Erkenntnisse aus der bisherige Entwicklung:

  1. Auch wenn ich noch nicht mit allen Tests durch bin, kann aber schon schreiben, dass die Kommunikation über UART und den RS485 Konverter sehr bequemen ist. Sie bietet sehr viel Flexibilität da man auf kein speziellen Protokoll angewiesen ist. Dies kann bei anderen Fällen aber auch ein Nachteil sein. Die Kommunikation mit RS485 läuft schön transparent und man bekommt davon nichts mit. D. h. man muss sich nicht pragammtechnisch drum kümmern. Ich habe versucht es mit Modbus RTU-Protokoll zu testen, dies war aber recht kompliziert, insbesondere wenn man mehr als nur Zahlen übertragen möchte. Deswegen kann man sich m.M. Kommunikation mit Modbus über UART sparren. Sofern man natürlich nicht ein Gerät hat, der nur Modbus spricht. Man verliert damit zwar die Adressierung von Master/Slave Knoten (d.h. Authentifizierung-Schicht), dies lässt sich aber einfach programmieren. Ein Nachteil dieser Lösung ist aber die fehlende Autorisierung bzw. Verschlüsselung. Wenn jemand es haben möchte, muss sich es programmieren.
  2. Ich habe in dem Kontext zwei Sensoren für Licht- bzw. Helligkeitsstärke getestet KY-018 und GY-302. Nach m.E. ist der KY-018 viel empfindlicher/besser. Er braucht zwar ACD Anschluss von Pico aber liefert die Werte deutlich granulärer und man kann damit kleinere Änderungen erkennen. Wenn man aber mit Lux Einheit arbeiten möchte wird GY-302 wahrscheinlich besser.

Viele Grüße
Bauherr

Ich hätte JST (vllt JST XH) gesagt, das Kabel ist aber dafür wahrscheinlich zu dick. Man könnte es mit Klemmen (wie die Wago Klemmen) auf ein dünneres Kabel führen.

Ich weiß nicht genau, wozu man ein Backup Kabel benötigt. Falls eine Maus das Original Kabel durchbeisst? :smiley:

Wenn man ESD Schutz mal außer Acht lässt, dann reicht ein 100nF Kondensator am Eingang des Boards, wo 12V reinkommen. Der solte dann aber entsprechend spannungsfest sein, also deutlich über 12V. Kurzzeitige Überspannung wird er einfach “schlucken”.

Ob die Sensoren Stabilisierung benötigen, hängt von vielen Faktoren ab. Datenblatt, Leitungslänge, max. Stromverbrauch, ob es plötzliche Schwankungen im Stromverbrauch gibt…
Die fertigen Regler haben sowas nicht. Wenn die Leitung zwischen Regler und Sensor mehr als wenige cm ist, sollte man grob geschätzt einen >1uF Kondensator vor den Sensor tun. Da gibt es aber tausend Feinheiten, darüber kann man Bücher schreiben. Kapazitätsabfall mit steigender Spannung z.B….

Überflüssig. Wenn es um Sicherheit geht, also Erkennen von Kurzschlüssen, gibt es Spannungsregler, die eine max Grenze haben, z.B. 500mA, und darüber die Stromzufuhr kappen. Es gibt wahrscheinlich auch welche, die einen Pin haben, der anzeigt, ob so ein Zustand vorherrscht.
Manuell macht man das mit einem Widerstand in Serie geschalten mit der Stromzufuhr, und indem man vor und nach dem Widerstand die Spannung misst. Daraus lässt sich berechnen, wieviel Strom fließt.

Der Ansatz mit LDO auf 5V, danach LDO auf 3,3V ist nicht verkehrt.

1 „Gefällt mir“