Ich bin kurz davor, eine erste Version des automatischen Hochladens zu haben.
Allerdings habe ich noch einen kleinen Bug. Ich versuche, die Karte mit meiner .hex-Datei zu flashen, aber es funktioniert nicht.
avrgirl.flash(require.resolve(`arduino-code.ino.standard.hex`, function (error) {
if (error) {
logger.warn(error);
} else {
logger.warn('Flashing done!');
}
});
Offensichtlich wird der relative Pfad nicht akzeptiert.
2020-05-15T14:35:32+0200 <warn> setup.js:22 () { Error: ENOENT: no such file or directory, open 'mega/arduino-code.ino.hex'
at Object.openSync (fs.js:443:3)
at Object.readFileSync (fs.js:343:35)
at Object.tools._parseHex (/home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/tools.js:13:17)
at Stk500v2._upload (/home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/stk500v2.js:28:19)
at /home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/avrgirl-arduino.js:109:24
at /home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:26:18
at Connection._setUpSerial (/home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:49:10)
at /home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:25:15
at /home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:70:12
at /home/pi/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:191:26
at process._tickCallback (internal/process/next_tick.js:68:7)
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: 'mega/arduino-code.ino.hex' }
Offenbar wird nur ein absoluter Pfad akzeptiert. Haben Sie eine Lösung für dieses Problem?
Edit:
Gut, es war nicht so kompliziert, es ist korrigiert
Daher sollte das automatische Hochladen für Arduino Uno und Mega jetzt funktionieren! Die .hex-Dateien für andere Karten kommen bald
Hey Hey !
Tolle Fortschritte und super Arbeit!
Meine Gladys 3-Installation läuft immer noch und ich habe noch ein paar andere « Basteleien » am Laufen, aber sobald ich Zeit habe, teste ich das alles!
Bravo, das ist sehr vielversprechend!
Im Moment gibt es noch einiges zu korrigieren, aber wir kommen einer fast vollständigen Lösung näher.
Ich arbeite gerade am Empfangsteil. Ich habe also ein kleines Skript erstellt, das mit einer POST-Anfrage ausgeführt wird. Die Ergebnisse sind vielversprechend, ich erhalte die Daten eines Sensors, den ich gestern bei mir zu Hause installiert habe:
Die Idee ist nun, den generischen Arduino-Code so zu ändern, dass ein standardisiertes JSON-Format entsteht, das von Gladys verstanden wird.
Zusätzlich habe ich mich gefragt, ob es nicht praktischer wäre, die Sende- und Empfangsvorgänge direkt auf Ebene der Arduinos zu trennen? Mit anderen Worten, ein Code für einen Arduino, der Daten sendet, und ein Code für einen Arduino, der als Sensor und Empfänger dient. Dadurch könnte man, wenn man Verzögerungen für den Empfang vorgeben muss, Gladys nicht beeinflussen, wenn man ein Signal senden möchte.
Im Moment sind das noch nur Ideen, aber sobald alles klar ist, sollte diese „finale“ Entwicklungsphase recht schnell gehen
Ich denke, es ist einfacher, so eine Art All-in-One-Lösung zu haben.
In puncto Zeit ist es ja trotzdem relativ schnell und ich denke nicht, dass es Gladys beeinflusst, oder?
Perfekt, ich habe ein bisschen daran gearbeitet. Eine neue Version des Arduino-Codes wurde hochgeladen, und jetzt ist es möglich, 433-Sensoren zu erstellen. Bisher erscheinen die seriellen Ausgaben des Arduino nur in den Logs, und die letzte Ausgabe wird im Parameter ‹ CODE › des Geräts gespeichert.
Ich habe immer noch Schwierigkeiten, mir vorzustellen, wie die Geräte in der Benutzeroberfläche dargestellt werden könnten, aber wir kommen endlich zu einer Kommunikation in beide Richtungen
Falls ihr Vorschläge habt, wie die Geräte angezeigt werden könnten, bin ich offen dafür
Übrigens @pierre-gilles, ich habe versucht, den Sensor in der Datenbank als Temperatursensor zu definieren, aber er erscheint nicht auf dem Dashboard, wenn ich meine Box device-in-room mache… Gibt es Spezifikationen, damit er angezeigt wird?
Nach einigen Tagen Testen und ein paar Problemen hier mein Feedback. Ich werde zunächst die Tests zum Hochladen und Senden auf 433 MHz vorstellen (Ich habe keine Chacon-Steckdosen – Ich habe 4 bestellt, die werden mir immer nützlich sein ^^). Dann werde ich in einem zweiten Schritt die Tests zum Empfangen posten.
Zur Information: Der Unterschied bei ArduinoJSON kommt daher, dass du Version 5 verwendest, während ich seit etwa einem Jahr auf Version 6 umgestiegen bin, die insbesondere Fehler bei der Deserialisierung behandelt. Vielleicht wäre es gut, so schnell wie möglich auf diese Version umzusteigen, da sich, wie ich dir bereits gesagt habe, die Aufrufe ändern. Das liegt bei dir, wenn du Hilfe brauchst, werde ich dich unterstützen. Es gibt nicht viel zu ändern.
Auf Programmierseite waren keine erforderlichen Aktionen notwendig, damit es funktioniert:
Testplattform:
1. Arduino UNO-Board - Offiziell Made in Italy - OK für die 2 Sender
Hochladen OK: setup.js:27 () Flashing done!
Codes an Arduino senden OK:
<warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
<warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"3","code":"1381717","bit_length":"24"}}%
5. Arduino Due-Board - Offiziell Made in Italy - Blaue Farbe - Rückseite anders als das grüne Board - Nicht getestet
Hochladen Fehler:
2020-05-20T20:49:34+0200 <warn> setup.js:25 () Error: no Arduino 'duemilanove168' found.
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:30:25
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:70:12
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:191:26
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:94:5)
- Arduino Due in meinem Besitz, nicht Duemilanov - USB-Port-Details:
[26206.334098] usb 1-1.2: new full-speed USB device number 23 using xhci_hcd
[26206.477587] usb 1-1.2: New USB device found, idVendor=2341, idProduct=003d,
bcdDevice= 0.01
[26206.477595] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[26206.477600] usb 1-1.2: Product: Arduino Due Prog. Port
[26206.477605] usb 1-1.2: Manufacturer: Arduino (www.arduino.cc)
[26206.477610] usb 1-1.2: SerialNumber: 5583931343835151F1F0
[26206.480259] cdc_acm 1-1.2:1.0: ttyACM11: USB ACM device
6. Arduino Due-Board - Offiziell Made in Italy - Grüne Farbe - Nicht getestet
Wie im vorherigen Punkt 5
7. Arduino MEGA2560 R3-Board - Made in Italy - Marke ELEGOO - OK für die 2 Sender
Hochladen OK: setup.js:27 () Flashing done!
Codes an Arduino senden OK:
<warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
<warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"3","code":"1381717","bit_length":"24"}}%
8. Arduino Leonardo ETH R3-Board - Offiziell Made in Italy - Nicht getestet
Hochladen Fehler:
2020-05-20T15:50:01+0200 <warn> setup.js:25 () Error: no Arduino 'leonardo' found.
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:30:25
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:70:12
at /home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/avrgirl-arduino/lib/connection.js:191:26
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:94:5)
- Arduino Leonardo ETH in meinem Besitz, nicht Leonardo allein - Als « Unknown » in den Konfigurationen erkannt - USB-Port-Details:
[25878.209177] usb 1-1.2: new full-speed USB device number 22 using xhci_hcd
[25878.349042] usb 1-1.2: New USB device found, idVendor=2a03, idProduct=8040, bcdDevice= 1.00
[25878.349049] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[25878.349054] usb 1-1.2: Product: Arduino Leonardo ETH
[25878.349059] usb 1-1.2: Manufacturer: Unknown
[25878.351702] cdc_acm 1-1.2:1.0: ttyACM11: USB ACM device
9. Board Arduino YUN - Made in Taiwan - Farbe blau - Funktioniert nicht... kein Empfang
Hochladen OK: setup.js:27 () Flashing done!
Besonderheit: Nach dem Hochladen muss die Seite neu geladen und der USB-Port erneut ausgewählt werden (der sich in der Zwischenzeit geändert hat), da die Platine nach dem Hochladen vollständig neu startet, indem sie die Stromversorgung trennt (Netzwerkport wird ebenfalls zurückgesetzt)
Codes an Arduino senden OK:
<warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
<warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"3","code":"1381717","bit_length":"24"}}%
- Code-Empfang - Keiner:
10. Board MEGA2560 R3 + ESP8266 USB-TTL - Made in ? - Marke WeMOS - Nicht getestet
Hochladen Fehler mit Arduino Mega ausgewählt:
2020-05-20T21:10:47+0200 <warn> setup.js:25 () Error: stk500 timeout. 200ms
at Timeout.<anonymous> (/home/pi/GladysV4-ArduinoUSB/Gladys/server/services/arduino/node_modules/stk500-v2/lib/parser-v2.js:114:21)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7) {
code: 'E_TIMEOUT'
}
- USB-Port-Details:
[44768.245296] usb 1-1.3: neues Full-Speed-USB-Gerät Nummer 26 wird verwendet xhci_hcd
[44768.381652] usb 1-1.3: Neues USB-Gerät gefunden, idVendor=1a86, idProduct=7523, bcdDevice= 2.54
[44768.381668] usb 1-1.3: Neue USB-Gerätestrings: Mfr=0, Product=2, SerialNumber=0
[44768.381682] usb 1-1.3: Produkt: USB2.0-Serial
[44768.391535] ch341 1-1.3:1.0: ch341-uart-Wandler erkannt
[44768.395073] usb 1-1.3: ch341-uart-Wandler jetzt an ttyUSB0 angeschlossen
11. Board Arduino Mega ADK R3 - Offiziell Made in Italy - OK für beide Sender
Erstellung der .hex-Dateien
Hochladen OK: setup.js:27 () Flashing done!
Wechsel von Pin 3 zu Pin 4 für funktionsfähig … Problem mit der Karte??
Codes an Arduino senden OK:
<warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
<warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"4","code":"1381717","bit_length":"24"}}%
12. Board ESP8266 LoL1n new NodeMcu v3 - Made in Italy - Marke WeMOS - Nicht getestet, da nicht kompatibel
Nicht verfügbar
Verbesserungsvorschläge, die du vielleicht im Kopf hast:
Nach dem Speichern der Konfiguration muss ich derzeit für jede Karte die Seite mit F5 neu laden, um das Hochladen durchführen zu können. Vielleicht liegt das an der DEV-Basis? Oder ein automatisches Neu Laden nach jeder Aktion vorsehen? …
Wenn man einen Arduino aus- und wieder einsteckt, wird die Karte in der Konfigurationsseite nicht mehr ausgewählt - falls möglich, den richtigen Port automatisch in Abhängigkeit von den idVendor/idProduct/SerialNumber auswählen, die beim ersten Mal gespeichert wurden, andernfalls im Dashboard eine Warnung anzeigen, dass der Benutzer die richtige Karte im Konfigurationsmenü erneut auswählen muss (ich glaube, die Warnungen werden im Dashboard noch nicht behandelt),
Warnmeldungen in der Karte-Box während des Hochladens, um zu warnen « Hochladen läuft », « Hochladen erfolgreich », « Hochladen nicht möglich », usw…,
Das Löschen einer Karte funktioniert bei mir nicht,
Auf der Devices-Ansicht, bei « 433 Emission Chacon Steckdose », haben wir den ON-Code / OFF-Code (der normalerweise nur für die Funktionen Schalter und Licht gelten sollte? Nutzen der Funktion Knopf?). Aber auf der Seite « 433 Emission » gilt dasselbe für diese beiden ersten Funktionen. Sollte man nicht zwei Zeilen ON-Code + Code-Länge / OFF-Code + Code-Länge oder sogar eine gemeinsame Code-Länge vorschlagen, da man in der Regel die gleiche Länge verwenden wird.
Der Empfang folgt. Schon einige Tests durchgeführt.
Ach so! Ja, wenn du die Möglichkeit hast, mich zu unterstützen, bin ich nicht dagegen, dann wäre es erledigt ^^
Das ist seltsam, bei mir funktionieren sowohl das Hinzufügen als auch das Löschen sehr gut…
Ich habe die Anzeige so geändert, dass es etwas kohärenter erscheint, die erste Version war vor allem ein Test, bis der Rest verbessert wird. Wenn du mir dein Feedback zu dieser neuen Version geben könntest, wäre das super
Die Nachrichten sind erstellt. Vielleicht muss ich das später noch einmal überarbeiten, aber normalerweise ist es eingerichtet.
Das ist auch seltsam… Bei mir kann ich alles ohne Neuladen tun, selbst in DEV…
Ich habe gerade die USB-API modifiziert, um diese Parameter bei der Abfrage der USB-Ports hinzuzufügen. Wenn ich keinen Fehler im Code gemacht habe, sollte es funktionieren. Ich konnte es noch nicht testen, da ich bei meinen Tests keine Path-Änderung hatte, aber wenn es dir passiert, würde ich gerne dein Feedback haben ^^
Hallo @Xeanorts! Du hast die Funktionsweise des Dienstes gut verstanden ^^
Ehrlich gesagt ist der Dienst mehr auf die USB-Kommunikation mit dem Arduino ausgerichtet. Da ich noch nie einen Nano IOT oder Uno Wifi verwendet habe, kenne ich ihre Funktionsweise nicht. Aber das könnte in Zukunft Gegenstand eines Updates des Dienstes sein, um sie zu berücksichtigen.
Derzeit ist die Priorität für mich, einen zuverlässigen und fertigen USB-Kommunikationsdienst zu haben.
Der generische Code ermöglicht derzeit die IR-Übertragung
Das Problem liegt wahrscheinlich an den CORS-Anfragen, die in dieser Konfiguration nicht durchgehen… Bei mir ist das auch so…
Was ich mache, ist, nachdem ich meine Datenbank migriert habe (im Ordner server: npm run db-migrate:dev), öffne ich nano front/config.js und ersetze « localhost » durch die IP-Adresse des Rechners, auf dem Gladys läuft.
@benPi, ja, ich mache dasselbe wie @billona, die Front holt die Datenbank vom localhost des aktuellen Browsers. Wenn du also wie ich eine DB laufen hast, die auf dem localhost läuft, verbindet sie sich damit. Seltsam ^^
Mit Vergnügen ^^
Du aktualisierst deine Bibliothek über die Arduino-IDE auf v6.15.2
StaticJsonBuffer<400> jsonBuffer;
JsonObject& v = jsonBuffer.parseObject(json_data);
durch die folgenden Zeilen:
StaticJsonDocument<400> jsonBuffer;
DeserializationError error = deserializeJson(jsonBuffer, json_data);
if (error) {
Serial.println(error.c_str());
return;
}
JsonObject v = jsonBuffer.as<JsonObject>();
Bei mir funktioniert es gut, ich habe die Tests mit deiner Version und der modifizierten Version durchgeführt (die zweite mit einem Upload von meinem Windows-PC).
GIF unten ansehen. Ich kann weder Karten noch Geräte löschen.
Es handelt sich um einen Fehler bei der « Länge ». Zur Information führe ich alle Tests mit deinem Projekt auf 2 Plattformen durch, VSCode auf Windows und einem Raspberry Pi 4. Das Verhalten ist immer dasselbe, ich werde dir mitteilen, falls es Unterschiede gibt. Ich verwende auch immer 2 Browser, Chrome und Firefox, um sicherzustellen, dass es nicht an dieser Seite liegt. Kurz gesagt, ich versuche, so viele Tests wie möglich mit 2 Trägern (PC/RPi, Windows/Linux, Chrome/Firefox, 2 Arduino desselben Typs für jeden Typ, 2 x E433Mhz generisch / 2 x E433Mhz Markenware, ebenso für die R433MHz - sogar 3) durchzuführen.
Außerdem kann ich seit dem Update nach deinem Beitrag keine Tests mehr durchführen, er erkennt die Karten nicht mehr, die aber durch den Befehl dmesg -s 1024 sichtbar sind, und die Änderung des Kartentyps lässt Google oder Firefox komplett abstürzen (getestet auf beiden). Ich muss über den Task-Manager kicken oder warten, bis Google mir vorschlägt, die Seite zu unterbrechen:
GIF des Problems
Außerdem sehe ich, dass der PIN für den Empfang nicht mehr angeboten wird. Ich hatte bei den vorherigen Tests bemerkt, dass man den PIN 0 einstellen und den Empfänger an den PIN 2 anschließen muss, was normal ist, da er durch eine Unterbrechung behandelt wird (« Unterbrechung 0 = PIN 2 » bei den meisten Arduino, « PIN 3 » bei YUN und Leonardo mindestens). So funktionierte es gut mit deinem Programm bei meinen Tests unter der Arduino-IDE. Allerdings konnte ich es nicht unter dem RPI machen, ich kann den seriellen Port nicht lesen, wenn er von Gladys belegt ist.
Das war’s, ich weiß jetzt nicht mehr, wie ich dir helfen kann, ich habe eine vollständige Neuinstallation des PI versucht, aber nichts weiter ^^ Leider habe ich keinen Apple-Support zur Verfügung ^^
ein, ich habe eine Raspbian-buster-desktop-Distribution und alle Schritte der Entwicklerinstallation durchgeführt, wobei ich den Gladys-Pfad von PG durch den von @billona ersetzt habe.
Also habe ich heute Morgen die Zeile localhost geändert,
localApiUrl: process.env.LOCAL_API_URL || ‹ http://IP_DU_RPI:1443 ›,
webSocketUrl: process.env.WEBSOCKET_URL || ‹ ws://IP_DU_RPI:1443 ›,
Und es funktioniert!
ein /gladys/server $ npm start
Ich hatte einen Fehler:
npm WARN npm npm unterstützt Node.js v10.19.0 nicht
npm WARN npm Du solltest wahrscheinlich auf eine neuere Version von Node aktualisieren, da wir
npm WARN npm keine Garantie geben können, dass npm mit dieser Version funktioniert.
npm WARN npm Unterstützte Versionen von Node.js sind die neueste Version von 4, 6, 7, 8, 9.
npm WARN npm Du kannst die neueste Version unter https://nodejs.org/ finden
> gladys-server@ start /home/pi/gladys/server
> cross-env NODE_ENV=development nodemon index.js
[nodemon] 1.19.4
[nodemon] Um zu jedem Zeitpunkt neu zu starten, gib `rs` ein
[nodemon] Überwacht Verzeichnis(se): *.*
[nodemon] Überwacht Erweiterungen: js,mjs,json
[nodemon] Startet `node index.js`
2020-05-24T10:41:45+0200 <info> system.init.js:31 (System.init) System.init: Dieses System hat keinen Docker-Daemon verfügbar.
2020-05-24T10:41:46+0200 <debug> brain.train.js:54 (Brain.train) Training brain...
2020-05-24T10:41:46+0200 <debug> brain.train.js:56 (Brain.train) Brain trained!
2020-05-24T10:41:50+0200 <debug> service.load.js:44 (Promise.all.SERVICES_TO_LOAD.map) { Error: Modul 'openzwave-shared' nicht gefunden
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.ZwaveService [as zwave] (/home/pi/gladys/server/services/zwave/index.js:7:17)
at Promise.all.SERVICES_TO_LOAD.map (/home/pi/gladys/server/lib/service/service.load.js:37:65) code: 'MODULE_NOT_FOUND' }
2020-05-24T10:41:50+0200 <log> index.js:19 (Object.start) starting example service
2020-05-24T10:41:50+0200 <log> index.js:16 (Object.start) starting Arduino service
2020-05-24T10:41:50+0200 <log> index.js:51 (Object.start) starting CalDAV service
2020-05-24T10:41:50+0200 <info> index.js:20 (Object.start) Starting Dark Sky service
2020-05-24T10:41:50+0200 <log> index.js:16 (Object.start) starting MQTT service
2020-05-24T10:41:50+0200 <log> index.js:18 (Object.start) starting Philips Hue service
2020-05-24T10:41:50+0200 <log> index.js:16 (Object.start) starting RTSP service
2020-05-24T10:41:50+0200 <info> index.js:19 (Object.start) Starting telegram service
2020-05-24T10:41:50+0200 <info> index.js:13 (Object.start) Starting usb service
2020-05-24T10:41:50+0200 <log> index.js:14 (Object.start) Starting Xiaomi service
2020-05-24T10:41:50+0200 <log> index.js:15 (Object.start) starting Tasmota service
2020-05-24T10:41:50+0200 <info> service.start.js:16 (Service.start) Service darksky ist nicht konfiguriert, daher wurde er nicht gestartet.
2020-05-24T10:41:50+0200 <info> service.start.js:16 (Service.start) Service telegram ist nicht konfiguriert, daher wurde er nicht gestartet.
2020-05-24T10:41:50+0200 <info> service.start.js:16 (Service.start) Service mqtt ist nicht konfiguriert, daher wurde er nicht gestartet.
2020-05-24T10:41:51+0200 <debug> device.init.js:31 (DeviceManager.init) Device : init : Found 0 devices
2020-05-24T10:41:51+0200 <debug> scheduler.init.js:9 (Scheduler.init) Scheduler.init
events.js:174
throw er; // Unbehandelter 'error' event
^
Error: listen EADDRINUSE: address already in use :::1443
at Server.setupListenHandle [as _listen2] (net.js:1280:14)
at listenInCluster (net.js:1328:12)
at Server.listen (net.js:1415:7)
at Object.start (/home/pi/gladys/server/api/index.js:62:10)
at /home/pi/gladys/server/index.js:21:10
Emitted 'error' event at:
at Server.emit (events.js:198:13)
at emitErrorNT (net.js:1307:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[nodemon] app crashed - waiting for file changes before starting...
@benPi, dieser Fehler bedeutet, dass der Server bereits gestartet wurde. Wenn du die Logs erneut ansehen möchtest, ist es am besten, deinen RPi neu zu starten und alles auf die gleiche Weise neu zu starten. Nach einer automatischen SSH-Trennung bleibt der Server zwar gestartet, aber nicht die Frontend-Anwendung.
Übrigens: Kann ich von meinem Browser aus eine Anfrage an den Server senden, wenn der Frontend nicht gestartet ist? Ich habe kein Beispiel für eine Anfrage, aber es ist, um es besser zu verstehen.
@billona Hier ist mein erstes Feedback. Es ist super! Es funktioniert von alleine!
Ich habe einige Anmerkungen, aber die betreffen eher das Feintuning und das Verständnis. Für mich ist es absolut notwendig, dass man anpassen kann, was an den Arduino gesendet wird (z. B. ein « Anpassen »-Button wie im Beispiel unten).
Ich habe absichtlich meine « Newbie »-Seite betont, damit so viele Dinge wie möglich ergonomisch und intuitiv sind.
Allgemein würden Etiketten, die erscheinen, wenn man mit der Maus über einen Button fährt, helfen, in einem Satz zu sehen, was erwartet wird. Das hilft beim Verständnis.
Setup:
Name der Karte: Man weiß nicht, ob man alles eintragen kann oder ob man eine Referenz kopieren muss. Ein Satz zur Klarstellung
Wählen Sie das Modell Ihres Arduino aus: « Sie finden es hier… », vorausgesetzt, es gibt einen solchen Ort
Wählen Sie den USB-Anschluss aus, an dem Ihr Arduino angeschlossen ist: Da ich es nicht wusste, habe ich 2 Arduinos mit 2 verschiedenen Anschlüssen erstellt. Beide funktionieren.
Allerdings sollte einer der 2 Arduinos « nicht verbunden, Fehler, es ist kein Arduino auf dev/ttyAMA0 » anzeigen
[EDIT] Tatsächlich ist kein Arduino angeschlossen, daher sollte « Arduino verbunden » nicht angezeigt werden.
Sollte es eher « USB verbunden » heißen?
PS Ich habe den Arduino nachträglich angeschlossen, aber die USB-Optionen ändern sich nicht.
Code hochladen: Wenn ich es richtig verstanden habe, wird ein Code auf den Arduino hochgeladen? Vielleicht gibt es danach eine Sicherheit, aber jetzt habe ich Angst, darauf zu klicken, weil ich Angst habe, meinen eigenen Arduino-Code zu löschen. Ein kleines Erklärungs-Etikett würde beruhigen oder vor der Manipulation warnen: « Achtung, Sie werden den letzten Code in Ihrem Arduino verlieren. »
GERÄTE:
Name: Es gibt überall Namen (Kartennamen, Unterdienstnamen, Slug, TAG usw.). Ich nehme an, dass ich aufgrund der weiteren Schritte den Namen meiner gesteuerten Steckdose eingeben muss. Aber das ist ein bisschen verwirrend.
FUNKTION:
Typischerweise möchte ich einen Servomotor bewegen. Es sollte möglich sein, deinen fertigen Code, der sehr praktisch ist, mit der Möglichkeit zu kombinieren, seine eigene Funktion zu erstellen. Beispielsweise wäre meine Funktion:
SERVO (‹ Position › = ‹ 180 ›). Die Frage ist also, wenn ich 181 sende und es begrenzt ist, gibt es eine Fehlermeldung? Oder sollte man 100% = 180° wählen? (wie bei der Helligkeit der Lichter)
Für eine offene Anwendung, in gleicher Weise, wie ich eine Anfrage in der Form IP/?servo=180 oder ähnlich senden kann, sollte man seinen Befehl in Rohform senden können. Außerdem wäre es einfacher für das Debugging, da ich dasselbe über meine Arduino-Konsole senden kann, wenn ich meinen Code .ino auf meinem Computer teste.
Vorschlag (das Beste): Wenn man auf « Anpassen » klickt, wird der Rohcode (wie die Skripte) angezeigt, der an den Arduino gesendet wird, den man dann anpassen kann (mit dem Risiko, dass es nicht mehr funktioniert, natürlich).
DATAPIN: Achten Sie darauf, dass bestimmte Pins nicht mit einer bestimmten Aktion kompatibel sind
Gibt es eine « Warnung », wenn ein PIN zweimal ausgewählt wird? « Warnung: Daten-Pin 7 wird zweimal verwendet, das könnte ein Fehler sein und Ihrem Gerät schaden »
IR SENDEN: Wenn ich das « Protokoll » des IR-Sendens ändern möchte, sollte ich das können.
Ich bin deiner Meinung, es gibt noch einiges an der UI zu ändern, damit alles klar ist. Zuerst möchte ich den Empfangsteil fertigstellen, bevor ich mich um die Optimierung kümmere.
Könntest du mir den Arduino-Code schicken, den du für die Steuerung deines Servos verwendest? Ich füge nach und nach Funktionen zum Code hinzu. Zum Beispiel enthält das letzte Update die Datenerfassung über DHT11.
Das ist eine super Idee, ich füge das zu meiner Roadmap hinzu. Sobald alles fertig ist, werde ich daran arbeiten
Ja, im Moment ist es nur sendNEC, aber ich werde später die anderen Protokolle hinzufügen.
@Terdious danke für deine Hilfe, ich habe den Arduino-Code geändert, ich teste das heute Nachmittag.
Danach, basierend auf dem, was du mir zu den serialNumber, productID, usw. vorgeschlagen hast, habe ich die USB-API geändert und damit die Karteneinstellungen in der DB. Wenn du es noch nicht gemacht hast, empfehle ich dir, mit einer neuen DB zu beginnen. Da ich noch in der Entwicklung bin, ist es normal, dass sich die DB-Daten im Laufe der Zeit ändern, aber wenn einige Daten nicht eingegeben werden und dein Browser sie erwartet, ist es logisch, dass Fehler auftreten.
Das ist auch wirklich seltsam. Vielleicht liegt es an den letzten Änderungen der API und der DB?
Ja, ich habe entschieden, dass der Pin für den 433-Empfang zunächst zwingend 0 sein muss. Das verhindert, dass der Benutzer einen Pin eingibt, der nicht funktioniert. Daran werde ich später arbeiten.
Auf jeden Fall vielen Dank für all dieses Feedback
Ich habe oben meinen Arduino-Code mit Licht- und Bewegungssensor sowie Servo gepostet. Ich musste den Code in Setup und Loop nach Dienste aufteilen, daher habe ich ihn kommentiert, um klar zu machen, welcher Code zu welchem Dienst gehört.
Du kannst dich gerne daran orientieren, dafür ist er da.
PS Ich hatte ein kleines Problem mit den vorgeschlagenen Ports. Wenn du statt ttyUSB0 den Namen des Ports anzeigen könntest, wäre das super. (Bei mir heißt es quinheng, das wird angezeigt, wenn man lsusb ausführt)
Hier gibt es ein Beispiel (ich glaube )