Gladys 4 - Entwicklung des Arduino-Dienstes

In Gladys verwendet man Arduino statt der GPIO des Raspberry aus mehreren Gründen:

  • Der Arduino arbeitet in Echtzeit

  • Den Zustand alle Sekunden am Raspberry auszulesen verbraucht unnötig Ressourcen

  • Der Arduino hat analoge Pins

  • Niedrigstufe-Programme sind einfacher in C auf dem Arduino zu schreiben als in JS direkt auf dem RPI

  • … :grin:

deine bemerkung ist interessant:

das ist meiner meinung nach vertretbar, wenn man nur ein kleines gerät verwalten möchte (ein 433-mhz-modul, einen tastschalter, eine led, einen temperaturfühler, …), vermeidet man so, einen arduino anzuschließen und eine weitere karte + stromversorgung + code + … zu haben.

dagegen wird der arduino interessant, wenn es mehrere geräte gibt und/oder wenn man dezentrale sensoren/aktuatoren mit lokaler intelligenter steuerung haben möchte.

ich kenne die programmierung auf raspberry-ebene nicht so gut wie du @joeypic (ich bin sicher, du hast recht und es ist ressourcenintensiv), aber ich weiß nicht, wann es sinnvoll ist, einen arduino zu verwenden.

ich denke, es wäre interessant, diesen vergleich anzustellen, denn tatsächlich hat die raspberry digitale ein- und ausgänge sowie i²c- und spi-anschlüsse, und für grundlegende bedürfnisse könnte dies es gladys-nutzern ermöglichen, auf einen arduino zu verzichten. (ich sehe einen einfachheitsvorteil, denn wenn man die verdrahtung angibt und der rest automatisch installiert werden kann), nutzer ohne jegliche kenntnisse in elektronik, geschweige denn programmierung, könnten einfach tastschalter, leds, einen temperaturfühler, 433-mhz-sensoren für ein paar euro im internet haben, ohne auf teure fertiglösungen von herstellern zurückzugreifen!

was denkt ihr?

Um es ganz genau zu sagen, bin ich eher ein Low-Level-Entwickler (PIC, STM32, ATMEGA, …) und arbeite hauptsächlich mit der Programmiersprache C. Vor einigen Monaten habe ich Python für die Arbeit gelernt, um meine Raspberry Pis besser nutzen zu können.
Daher habe ich mir zum Testen einen Docker-Container mit nur Python erstellt, der einen OneWire-Temperatursensor (DS1820) ausliest und die Daten an einen MQTT-Broker sendet, an den eine InfluxDB-Datenbank angeschlossen ist. Es funktioniert gut und ist nicht sehr kompliziert.

Als ich eure Nachrichten gelesen habe, dachte ich, dass es ein bisschen ähnlich aussieht.
Ich werde versuchen, das in den nächsten vier Tagen an Gladys anzupassen, dann können wir den Vergleich machen, der mich auch interessiert.
Ich finde, es wäre interessant, wenn der Benutzer die Lösung wählen könnte, die ihm am besten entspricht, basierend auf seinen Fähigkeiten.

100 % deiner Meinung

Zögere nicht, wenn du Zeit hast, ein Thema für deine Idee zu erstellen, damit sie nicht in einem anderen Thema wie diesem hier untergeht.

Halte mich auf dem Laufenden, das interessiert mich sehr und wenn du einen Tester brauchst, könnte ich dir helfen.

@+

Hallo, ich denke, Sie haben das vielleicht schon gesehen, aber es sieht interessant aus, um einen Arduino vollständig zu verwalten.

Für mich ist es wichtig, dass der Arduino die 433-MHz-Steuerung ermöglicht, um auch Infrarotbefehle zu nutzen, einen Lichtsensor und einen Bewegungssensor etc. einzusetzen. Ich möchte auch ein RGB-LED-Band direkt ansteuern.

Weitere Anforderungen, die möglicherweise bereits berücksichtigt sind: Chinesische Arduinos haben andere Namen und funktionierten daher nicht in der Version 3.

Die fortschrittlichsten, die ich verwendet habe, waren seria-isokar und sendradiocode, um 433 MHz mit der Pulslänge und allen anderen Parametern zu unterstützen.

Schließlich, aber ich nehme an, das ist in Gladys berücksichtigt, da es ihr Zweck ist, ein Philips Hue-Bewegungssensor über Arduino muss wie ein 433-MHz-Sensor behandelt werden, das verwendete Protokoll muss transparent sein.

Falls das weiterhelfen kann.

2 „Gefällt mir“

Hallo BenPi,
sehr interessant dein Thema, schau dir mal dieses hier an, das handelt von demselben.

https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154

eines der Themen ist genau das Protokoll sowie die Verwaltung des 433 MHz.

@+

@benPi und @camille ich habe das Thema zusammengeführt

@Reno ich bin deiner Meinung, aber die Idee ist auch, dass Gladys nicht immer auf einem Raspberry laufen wird. Manche Leute möchten Gladys vielleicht auf einem Gerät installieren, das keine GPIO-Pins hat. Deshalb ist die Arduino praktisch :smile:

Ansonsten bin ich mit dem Service schon recht weit gekommen, es wurden neue Funktionen implementiert.

Seite Setup :

Seite Gerät :

Ich bin noch lange nicht fertig, es gibt noch viel zu tun und anzupassen. Aber wenn ihr Lust habt, meinen Code zu testen, höre ich gerne euer Feedback :smile:

Hallo @Reno,

ich bin bereit, deinen Code zu testen.
Sag mir, wie ich vorgehen soll?

@camille War die Frage an mich gerichtet? Oder gibt es keinen Fehler? ^^

Falls es an mich gerichtet war, hier ist, wie ich es angehe:

  • Ich klone mein Repo
  • Ich führe einzeln ein npm install in den Ordnern back und front aus
  • Ich behebe potenzielle Probleme mit npm audit und npm audit fix
  • Falls du Probleme mit der Interaktion zwischen back und front hast, musst du die Datei front/config.js ändern und localhost durch die richtige IP-Adresse ersetzen,
  • Sobald das alles erledigt ist, führe ich ein npm run db-migrate:dev im Ordner server aus
  • Ich starte npm im Ordner back und front

Ab dann sollte normalerweise alles funktionieren, du hast Zugriff auf die Instanz, kannst ein temporäres Konto erstellen, auf Gladys zugreifen und alles testen, was du möchtest.

Falls du Probleme hast, können wir uns direkt über Discord oder PN austauschen, wie du möchtest, ich bin verfügbar :wink:

Auf jeden Fall danke, dass du bereit bist, es zu testen :smile:

Ich werde es auch versuchen zu testen. Aber ich habe nicht verstanden, was du geschrieben hast :smile:
Ich habe bereits das Repo geklont.. danach informiere ich mich ein bisschen und habe vielleicht ein paar Fragen.

Ich habe mit Java und JS angefangen und einen Arduino mit Untermodulen gemacht:

  • Servomotor
  • IR-Fernbedienung
  • 433Mhz, mit der Verwaltung des Pulslength-Protokolls und anderem
  • Helligkeitssensor
  • Bewegungssensor
  • Verwaltung eines oder mehrerer Relais
  • Ich überlege, eine Mikrofonfunktion hinzuzufügen: Steuerung, wenn ich in die Hände klatsche, Gladys könnte das auch über ihr Mikrofon tun…

Ich gehöre zu den Leuten, die bei der V3 Probleme beim Installieren hatten, aufgrund von Fehlern:

  • Arduino Nano Klon aus China nicht erkannt
  • Pin 2 mit dem Wert 0, mit allen Nummernzuordnungen, nicht einfach
  • Anpassung zur Verwaltung von Pulslength.

Kurz gesagt, wenn es beitragen kann, kann ich das irgendwo online stellen (hier, GitHub,.. ich denke, du weißt besser als ich, was am sinnvollsten ist).

Vielen Dank für deine Mitarbeit :grin:

Kein Problem, wenn du mich per PN kontaktieren möchtest, um das im Detail zu besprechen, zögere nicht :wink:

Mit großem Vergnügen, jede Dokumentation ist willkommen, um alle zufriedenzustellen ^^

Ich werde übrigens bald ein Google Formular erstellen, um herauszufinden, was jeder ungefähr von diesem Service erwartet, damit die weitere Arbeit auf Methoden ausgerichtet werden kann, die für die meisten geeignet sind.

Ich poste diese Nachricht hier, da sie sich an die Entwicklung des Arduino-Dienstes anlehnt, aber vielleicht verdient sie ihren eigenen Thread… Ich weiß nicht :stuck_out_tongue:

Für alle, die sich für die Arduino-Implementierung interessieren, habe ich ein kleines Umfrageformular erstellt, damit ihr mir eure Erfahrungen mit Arduino, eure Erwartungen an den Dienst und, falls vorhanden, eure Vorschläge für nützliche Dokumentation zukommen lassen könnt.

Vielen Dank, dass ihr euch die Zeit für diese kleine Umfrage nehmt, es dauert nur 2 Fragen :smile:

Genau darüber wollte ich sprechen, ein Submodul unter IR, RF433, Sensoren usw. wäre ein Subservice „arduino-to-arduino“. Mit WLAN und dem ESP8266 kann Gladys das zwar machen, aber wenn das WLAN mal nicht da ist, wird manchmal deshalb 433 genutzt, um nicht rund um die Uhr im WLAN zu baden oder sich vor einem WLAN-Ausfall zu schützen.

Dieser Subservice sollte in der Lage sein, den per USB empfangenen JSON-Befehl an den an Gladys angeschlossenen Arduino, per 433, unverändert an einen anderen Arduino, gut platziert (an der Decke!), zu senden, um eine Bewegung zu messen oder einen IR-Befehl an den Staubsaugerroboter auf der gegenüberliegenden Seite der TV-Box (in meinem Fall) zu senden.

Kurz gesagt, man sollte sich von einem an Gladys angeschlossenen Arduino befreien können. Sie müssen miteinander sprechen: Der USB-Arduino wird dann zu einem Gateway.

Hallo, zunächst freue ich mich, dass dieser Thread und die Entwicklung wieder aktiv sind.

Ich gebe zu, dass ich etwas zwiegespalten bin, was die Standardisierung angeht, aber das liegt wahrscheinlich daran, dass mein Arduino so etwas wie das zweite Gehirn meiner Installation ist. Um ein wenig zu erklären, wofür ich ihn verwende:

  • 433MHz-Sender: zum Steuern einfacher Steckdosen
  • 433MHz-Empfänger: Temperatur-/Feuchtigkeitssensor und Batteriestand der Sonden.
  • HC-11 Wireless Serial Port Module (auch 433MHz) zum Steuern meines Roomba und zum Lesen seiner Daten.
  • Summer, den ich für verschiedene Fälle aktiviere, z. B. wenn ich einen bestimmten Funkcode empfange, wird er aktiviert, was mir u. a. ermöglicht, die Reichweite meiner Temperatursonden (basierend auf DHT11 und ATtiny85) zu testen.
  • DHT11 zur Temperatur- und Feuchtigkeitsmessung
  • Ein Sensor zur Messung der Luftqualität.

Wenn ich sage, dass es so etwas wie ein zweites Gehirn ist, dann deshalb, weil ich hier alle meine verschiedenen empfangenen Informationen verarbeite/filtern, bevor ich sie möglicherweise an Gladys weiterleite. Zum Beispiel, wenn sich ein Wert nicht ändert, werde ich ihn nicht weiterleiten oder wenn er außerhalb seiner Min/Max-Grenzen liegt.

Unter Gladys habe ich auch ein virtuelles Gerät erstellt, mit dem ich die Weiterleitung an Gladys aller Daten, die über 433MHz gelesen werden, aktivieren oder deaktivieren kann. Dies ermöglicht z. B. das Lesen der Codes von Steckdosen-Fernbedienungen (über PuTTY). Da es standardmäßig deaktiviert ist, verhindert es auch, dass Gladys mit Informationen überflutet wird, die nicht zu meinem System gehören.

Ich verwalte auch alles, was meinen Roomba (Staubsaugerroboter) betrifft, da er über ein Anfragesystem funktioniert, sodass ich die Anfragen zeitlich steuern kann.

Mein Arduino-Code ist also alles andere als standardmäßig und einfach, was ihn zwangsläufig schwieriger portierbar macht.
Hier ein paar Bilder, um meine Ausführungen etwas zu veranschaulichen

Also, ich bin mir nicht sicher, ob ich den Fortschritt vorantreibe, aber zumindest füge ich einige Beispiele für die Verwendung des Arduino hinzu.

Pouet!

@Spouet ich verstehe deine Zurückhaltung gegenüber dieser Vorgehensweise.

Um es ein bisschen zu erklären, meine Philosophie in Bezug auf diesen generischen Code ist, dass der Benutzer möglichst wenig „Drecksarbeit“ leisten muss, um seine Arduino-Installation vorzubereiten. Er lädt den Code hoch, verbindet seine Module mit dem Arduino, verbindet den Arduino mit Gladys und konfiguriert alles in Gladys.

Könntest du mir den Arduino-Code schicken, den du auf Gladys 3 verwendest? Je mehr Dokumentation ich über das habe, was alle verwenden, desto besser kann der Code den Erwartungen der Benutzer entsprechen. :smile:

Aber ich verstehe deine Philosophie auch sehr gut, die gut mit der V4 von Gladys übereinstimmt. Allerdings ist das nur meine persönliche Meinung, aber für mich bedeutet es, einen Arduino und verschiedene Komponenten darauf zu setzen, schon, die Hände schmutzig zu machen.
Ich habe das Gefühl, dass für diejenigen, die wirklich so einfach wie möglich vorgehen wollen, hauptsächlich bei RF, der RFlink kommt, der gerade implementiert wird.

Ich schicke dir den Code, auch wenn er ein bisschen schnell zusammengeschustert ist ^^ (wie jeder ordentliche Bastler :wink: )

Ich schließe mich @Spouet an, wer Arduino sagt, sagt DIY und damit die Hände im Schmierfett haben. Es wird schwierig sein, einen Mittelweg zu finden, um zur Philosophie von Gladys 4 zu gelangen.

Das Wichtigste ist, dass alle auf ihre Kosten kommen, die Experten, die die API oder MQTT direkt nutzen, und die Nicht-Experten, die den Arduino-Dienst nutzen.

Ich bin eher @billona’s Meinung, dass man etwas so einfach wie möglich vorschlagen sollte und mit möglichst wenig Änderungen am Arduino-Code.

Für mich geht es nicht einmal um DIY, sondern um Einfachheit, selbst für den Entwickler, selbst für denjenigen, der es kann: Wenn es einfacher zu implementieren ist, ist es besser!

Das hindert Experten nicht daran, den Arduino-Code zu modifizieren und Anpassungen vorzunehmen: Wer mehr kann, kann auch weniger; meiner Meinung nach bleibt eine offene « USB-API » erhalten :slight_smile:

Für @billona zur Information: Das Modul, das wir in Gladys 3 hatten und das das repräsentiert, was viele Benutzer in der v3 haben, ist dieses:

https://github.com/GladysAssistant/gladys-radio

Mit diesem Arduino-Code:

https://github.com/GladysAssistant/gladys-radio/blob/master/new_433_gladys.ino

Wir verstehen uns nicht :smiley:

Es ist eine Frage von DIY im Sinne, dass der Arduino-Nutzer das mag und er die Hände schmutzig haben will :wrench:
Es ist nicht 100%, aber es ist trotzdem ein großer Teil, denke ich.

Und ich denke, dass er das einfache Ding nicht verwenden wird, weil es ihn nicht interessiert.


Ich versuche nur festzustellen, um nicht Zeit mit einer überkomplizierten Lösung zu verschwenden.
Ich belästige euch nicht weiter, meine Sichtweise ist vielleicht verzerrt, weil ich wahrscheinlich kein Nutzer des Dienstes sein werde :wink: