# Gladys 4 - Entwicklung des Arduino-Dienstes

**URL:** <https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154>\
**Category:** Développement\
**Created:** [6. Januar 2020 um 11:34 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154 "2020-01-06T11:34:28Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [14. Mai 2020 um 17:53 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/82 "2020-05-14T17:53:44Z")

</div>

> [@billona](#):
>
> So für den durchschnittlichen Benutzer: keine zusätzliche Manipulation mehr — er schließt seinen Arduino an, erstellt ihn in Gladys und klickt auf einen „Hochladen“-Button, der die Arbeit für ihn erledigt 😉

Das wäre verrückt! Tolle Entdeckung!

> [@VonOx](#):
>
> Genial für das Detail, ich hole mir die IDs für die UDEV-Regeln 👍

Top!

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [15. Mai 2020 um 12:38 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/83 "2020-05-15T12:38:09Z")

</div>

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 😄

---

<div class="post-metadata">

**Author:** ![Spouet](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spouet/32/1910_2.png) [@Spouet](https://community.gladysassistant.com/u/Spouet)\
**Post date:** [15. Mai 2020 um 16:42 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/84 "2020-05-15T16:42:54Z")

</div>

Hey Hey !  
Tolle Fortschritte und super Arbeit!  
Meine Gladys 3-Installation läuft immer noch und ich habe noch ein paar andere «&nbsp;Basteleien&nbsp;» am Laufen, aber sobald ich Zeit habe, teste ich das alles!  
Bravo, das ist sehr vielversprechend!

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [17. Mai 2020 um 21:16 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/85 "2020-05-17T21:16:31Z")

</div>

Vielen Dank, das freut mich 😄

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:

```
2020-05-17T20:28:05+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 999027 / 32bit Protocol
2020-05-17T20:28:05+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

2020-05-17T20:28:05+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 888052 / 32bit Protocol
2020-05-17T20:28:05+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 888052 / 32bit Protocol
2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 888052 / 32bit Protocol
2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 888052 / 32bit Protocol
2020-05-17T20:28:06+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

2020-05-17T20:28:15+0200 <warn> recv.js:23 (SerialPort.<anonymous>) Received 999026 / 32bit Protocol
2020-05-17T20:28:15+0200 <warn> recv.js:23 (SerialPort.<anonymous>) : 1

```

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 😉

---

<div class="post-metadata">

**Author:** ![Spouet](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spouet/32/1910_2.png) [@Spouet](https://community.gladysassistant.com/u/Spouet)\
**Post date:** [17. Mai 2020 um 21:30 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/86 "2020-05-17T21:30:57Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [18. Mai 2020 um 07:37 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/87 "2020-05-18T07:37:45Z")

</div>

> [@billona](#):
>
> Außerdem, praktisch gesehen, fragte ich mich, ob es nicht praktischer wäre, die Sende- und Empfangsoperationen 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.

Schau dir den Code an, den wir in Gladys 3 hatten, er verwaltete Senden und Empfangen in einem Programm und das funktionierte sehr gut! 🙂

Tolles Arbeit übrigens!

---

<div class="post-metadata">

**Author:** ![loic\_btz](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/l/3d9bf3/32.png) [@loic\_btz](https://community.gladysassistant.com/u/loic_btz)\
**Post date:** [19. Mai 2020 um 21:15 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/88 "2020-05-19T21:15:07Z")

</div>

Wahnsinn, super Arbeit 👏🏻  
Ich kann es kaum erwarten, das zu testen, ich programmiere viel auf Arduino und das ist eine super Nachricht.  
Sehr gute Arbeit.

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [20. Mai 2020 um 15:16 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/89 "2020-05-20T15:16:47Z")

</div>

@pierre-gilles @loic_btz Vielen Dank 😄

> [@pierre-gilles](#):
>
> Schau dir den Code an, den wir in Gladys 3 hatten. Er verwaltete das Senden und Empfangen in einem Programm und das funktionierte sehr gut! 🙂

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 ‹&nbsp;CODE&nbsp;› 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?

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [20. Mai 2020 um 19:45 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/90 "2020-05-20T19:45:31Z")

</div>

Hallo @billona,

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:

> **Empfängerseite:**
>
> - Board Arduino UNO - Offizielle Made in Italy
> - Unter Windows 10
> - Arduino IDE-Serienmonitor
> - Beispielprogramm der RC-Switch-Bibliothek:
> 
> > **Programm ReceiveDemo\_Simple**
> >
> > ```auto
> > #include <RCSwitch.h>
> > 
> > RCSwitch mySwitch = RCSwitch();
> > 
> > void setup() {
> > Serial.begin(9600);
> > mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
> > }
> > 
> > void loop() {
> > if (mySwitch.available()) {
> >   
> > Serial.print("Received ");
> > Serial.print( mySwitch.getReceivedValue() );
> > Serial.print(" / ");
> > Serial.print( mySwitch.getReceivedBitlength() );
> > Serial.print("bit ");
> > Serial.print("Protocol: ");
> > Serial.println( mySwitch.getReceivedProtocol() );
> > 
> > mySwitch.resetAvailable();
> > }
> > }
> > 
> > ```
> 
> - Verwendung einer Testzeile mit 3 Empfängern:
> 
> > **Chinesische Generika**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3015a66f3585c456d97f7d7213d683291399b69b.jpeg)
> 
> > **AUREL RX-4M50RR30SF**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/1/1f2d1ad073304f298f71b9d084fa930cc994021a.jpeg)
> 
> > **Generische RXB6**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b97ee325c5598fba135762839fec3aa85835fec5.jpeg)

> **Senderseite:**
>
> - Verwendung einer Testzeile mit 2 Sendern:
> 
> > **2 chinesische Generika jedes Mal, um sicherzugehen**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b31a819bdc34b698bdb98e4eb2e19feb6c90c363.jpeg)
> 
> > **AUREL 3 x SAW MID 5V/CS**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/9/900667536a1a81aae673a090d7b70326be595592.png)
> 
> - Programm: Bereitgestellt - Hochladen über Integrationen / Arduino / Konfiguration in Gladys
> - Gerätekonfiguration: 2 Geräte für die 2 Sender - Pin 10 und Pin 3 - Unterschiedliche Codes für die Tasten zur Trennung beim Empfang
> 
> > **Integrationen / Arduino / Geräte**
> >
> > ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/75f0a02031f3fbdeb98b4da41ea1a853463cf6ee.png)

Tests:

> **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:
> 
> ```auto
> <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"}}%
> 
> ```
> 
> - Codes empfangen OK:
> 
> ```auto
> 10:06:31.598 -> {"action":"received","value":517}
> 10:06:31.869 -> {"action":"received","value":517}
> 10:06:42.006 -> {"action":"received","value":1381717}
> 10:06:42.282 -> {"action":"received","value":1381717}
> 
> ```

> **2. Arduino UNO-Board - Nicht offiziell Made in China - KEYESTUDIO mit integriertem Ethernet Shield W5500 - OK für die 2 Sender**
>
> - Hochladen OK: `setup.js:27 () Flashing done!`
> - Codes an Arduino senden OK
> - Codes empfangen OK:
> 
> ```auto
> 15:39:02.464 -> {"action":"received","value":517}
> 15:39:02.737 -> {"action":"received","value":517}
> 15:39:07.016 -> {"action":"received","value":1381717}
> 15:39:07.290 -> {"action":"received","value":1381717}
> 
> ```

> **3. Arduino Nano-Board - Atmel MEGA328P Made in ? - Ursprünglich gelötete Pins (Ich weiß nicht, ob offiziell - blaue Farbe) - OK für die 2 Sender**
>
> - Hochladen OK: `setup.js:27 () Flashing done!`
> - Codes an Arduino senden OK:
> 
> ```auto
> 2020-05-20T21:04:58+0200 <warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
> 2020-05-20T21:04:58+0200 <warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"4","code":"1381717","bit_length":"24"}}%
> 
> ```
> 
> - Codes empfangen OK:
> 
> ```auto
> 21:05:09.001 -> {"action":"received","value":517}
> 21:05:09.275 -> {"action":"received","value":517}
> 21:05:11.949 -> {"action":"received","value":1381717}
> 21:05:12.223 -> {"action":"received","value":1381717}
> 
> ```

> **4. Arduino Nano-Board - Atmel MEGA328P Made in ? - Nicht gelötete Pins (Ich weiß nicht, ob offiziell - blaue Farbe) - OK für die 2 Sender**
>
> - Hochladen OK: `setup.js:27 () Flashing done!`
> - Codes an Arduino senden OK:
> 
> ```auto
> 2020-05-20T20:59:56+0200 <warn> send.js:18 (SerialPort.<anonymous>) Arduino: port opened
> 2020-05-20T20:59:56+0200 <warn> send.js:19 (SerialPort.<anonymous>) {"function_name":"emit_433","parameters":{"data_pin":"4","code":"1381717","bit_length":"24"}}%
> 
> ```
> 
> - Codes empfangen OK:
> 
> ```auto
> 21:00:06.321 -> {"action":"received","value":517}
> 21:00:06.591 -> {"action":"received","value":517}
> 21:00:10.053 -> {"action":"received","value":1381717}
> 21:00:10.323 -> {"action":"received","value":1381717}
> 
> ```

> **5. Arduino Due-Board - Offiziell Made in Italy - Blaue Farbe - Rückseite anders als das grüne Board - Nicht getestet**
>
> - Hochladen **Fehler** :
> 
> ```auto
> 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:**
> 
> ```auto
> [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:
> 
> ```auto
> <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"}}%
> 
> ```
> 
> - Codes empfangen OK:
> 
> ```auto
> 12:08:40.360 -> {"action":"received","value":517}
> 12:08:40.633 -> {"action":"received","value":517}
> 12:08:54.081 -> {"action":"received","value":1381717}
> 12:08:54.319 -> {"action":"received","value":1381717}
> 
> ```

> **8. Arduino Leonardo ETH R3-Board - Offiziell Made in Italy - Nicht getestet**
>
> - Hochladen **Fehler** :
> 
> ```auto
> 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 «&nbsp;Unknown&nbsp;» in den Konfigurationen erkannt**  
> **- USB-Port-Details:**
> 
> ```auto
> [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:
> 
> ```auto
> <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:
> 
> ```auto
> 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:**
> 
> ```auto
> [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:
> 
> ```auto
> <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"}}%
> 
> ```
> 
> - Code-Empfang OK:
> 
> ```auto
> 11:57:06.842 -> {"action":"received","value":517}
> 11:57:07.082 -> {"action":"received","value":517}
> 11:57:29.392 -> {"action":"received","value":1381717}
> 
> ```

> **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 «&nbsp;Hochladen läuft&nbsp;», «&nbsp;Hochladen erfolgreich&nbsp;», «&nbsp;Hochladen nicht möglich&nbsp;», usw…,
- Das Löschen einer Karte funktioniert bei mir nicht,
- Auf der Devices-Ansicht, bei «&nbsp;433 Emission Chacon Steckdose&nbsp;», 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 «&nbsp;433 Emission&nbsp;» 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.

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [21. Mai 2020 um 16:36 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/92 "2020-05-21T16:36:23Z")

</div>

Danke für deine Tests @Terdious

> [@Terdious](#):
>
> Zur Information, der Unterschied, den wir bei ArduinoJSON haben, 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.

Ach so! Ja, wenn du die Möglichkeit hast, mich zu unterstützen, bin ich nicht dagegen, dann wäre es erledigt ^^

> [@Terdious](#):
>
> Das Löschen einer Karte funktioniert bei mir nicht

Das ist seltsam, bei mir funktionieren sowohl das Hinzufügen als auch das Löschen sehr gut…

> [@Terdious](#):
>
> Auf der Devices-Ansicht, in „433MHz-Sendung 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 „433MHz-Sendung“-Seite gilt dasselbe für diese ersten beiden Funktionen. Sollten wir nicht zwei Zeilen anbieten: ON-Code + Code-Länge / OFF-Code + Code-Länge oder sogar eine gemeinsame Code-Länge, da man normalerweise die gleiche Länge verwendet.

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 🙂

> [@Terdious](#):
>
> Warnmeldungen in der Box der Karte während des Hochladens, um zu warnen „Hochladen läuft“, „Hochladen erfolgreich“, „Hochladen nicht möglich“, usw…,

Die Nachrichten sind erstellt. Vielleicht muss ich das später noch einmal überarbeiten, aber normalerweise ist es eingerichtet.

> [@Terdious](#):
>
> 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 Aktualisieren nach jeder Aktion vorsehen? …

Das ist auch seltsam… Bei mir kann ich alles ohne Neuladen tun, selbst in DEV…

> [@Terdious](#):
>
> Wenn man einen Arduino aus- und wieder ansteckt, wird die Karte auf der Konfigurationsseite nicht mehr ausgewählt - wenn möglich, den richtigen Port automatisch basierend auf den bei der ersten Registrierung gespeicherten idVendor/idProduct/SerialNumber auswählen, andernfalls im Dashboard eine Warnung anzeigen, dass der Benutzer die richtige Karte im Konfigurationsmenü neu auswählen muss (ich glaube, die Warnungen werden noch nicht im Dashboard behandelt).

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 ^^

> [@Xeanorts](#):
>
> Was ist mit der Verwendung eines Arduino Nano IOT oder Uno Wifi, der einfach mit dem gleichen Netzwerk wie Gladys verbunden ist, um ihn ohne USB-Anschluss funktionieren zu lassen? Im Moment habe ich keine Ahnung, wie das funktioniert.

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.

> [@Xeanorts](#):
>
> Zur Info, was mich interessiert, ist der IR-Teil, um eine universelle Fernbedienung zu erstellen, die von Gladys gesteuert werden kann, um mein TV und meinen Soundbar vollständig zu steuern.

Der generische Code ermöglicht derzeit die IR-Übertragung 🙂

---

<div class="post-metadata">

**Author:** ![benPi](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/b/53a042/32.png) [@benPi](https://community.gladysassistant.com/u/benPi)\
**Post date:** [23. Mai 2020 um 20:07 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/94 "2020-05-23T20:07:08Z")

</div>

Hallo,  
Ich habe es endlich geschafft, Gladys zu starten. Ich habe Docker nicht verwendet.

Ich habe keine erste Anmeldeseite und kein Passwort.

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/eed3071878699c9143f77f8431ddce1ebdd45812.png)

Ideen, wie ich es testen kann?

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [23. Mai 2020 um 22:26 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/95 "2020-05-23T22:26:46Z")

</div>

Wenn du das auf der Startseite hast, bedeutet das, dass Gladys eine bestehende Datenbank verwendet, die Anmeldedaten enthält.

Wenn du nicht die Schritte beschreibst, die du durchgeführt hast, um dorthin zu gelangen, ist es schwierig für uns, dir zu helfen.

Was ist dein Ziel? Den Arduino-Service testen?

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [23. Mai 2020 um 23:11 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/96 "2020-05-23T23:11:54Z")

</div>

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 «&nbsp;localhost&nbsp;» durch die IP-Adresse des Rechners, auf dem Gladys läuft.

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [24. Mai 2020 um 07:02 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/97 "2020-05-24T07:02:51Z")

</div>

@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 ^^

> [@billona](#):
>
> Ah, ich verstehe! Ja, wenn du die Möglichkeit hast, mich zu leiten, bin ich nicht dagegen, dann wird es erledigt ^^

Mit Vergnügen ^^

1. Du aktualisierst deine Bibliothek über die Arduino-IDE auf v6.15.2

> **Als Bild**
>
> ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/fa02d8e96d102fa979c71752a055322c91a34724.png)

1. Du ersetzt deine Zeilen 145 und 146:

```auto
StaticJsonBuffer<400> jsonBuffer;
JsonObject& v = jsonBuffer.parseObject(json_data);

```

durch die folgenden Zeilen:

```auto
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).

> [@billona](#):
>
> > [@Terdious](#):
> >
> > Das Löschen einer Karte funktioniert bei mir nicht
> 
> Das ist seltsam, bei mir funktioniert sowohl das Hinzufügen als auch das Löschen sehr gut…

> **GIF unten ansehen. Ich kann weder Karten noch Geräte löschen.**
>
> ![Test code Arduino](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/8410eeeabba4d92dc1e3da9e6ec499f078ec280f.gif)

> [@billona](#):
>
> > [@Terdious](#):
> >
> > Nach dem Speichern der Konfiguration muss ich derzeit für jede Karte die Seite mit F5 aktualisieren, um den Upload durchführen zu können. Vielleicht liegt es an der DEV-Datenbank? Oder ein automatisches Aktualisieren nach jeder Aktion vorsehen? …
> 
> Das ist auch seltsam… Bei mir funktioniert alles ohne Aktualisierung, selbst in der DEV-Version.

Es handelt sich um einen Fehler bei der «&nbsp;Länge&nbsp;». 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.

> **Als Bild**
>
> ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/06af489ddd6d59f2cbd5a6abc8d2bf9aba16de54.png)

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**
>
> ![Test code Arduino2](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/36ef761ba64fc4a48ee193eaea8c3a4031ee09d3.gif)

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 («&nbsp;Unterbrechung 0 = PIN 2&nbsp;» bei den meisten Arduino, «&nbsp;PIN 3&nbsp;» 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 ^^

---

<div class="post-metadata">

**Author:** ![benPi](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/b/53a042/32.png) [@benPi](https://community.gladysassistant.com/u/benPi)\
**Post date:** [24. Mai 2020 um 08:57 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/98 "2020-05-24T08:57:58Z")

</div>

> [@VonOx](#):
>
> Wenn du die Schritte, die du unternommen hast, nicht beschreibst, ist es schwierig für uns, dir zu helfen.
> 
> Was ist dein Ziel? Den Arduino-Dienst testen?

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 || ‹&nbsp;http://IP\_DU\_RPI:1443&nbsp;›,  
webSocketUrl: process.env.WEBSOCKET\_URL || ‹&nbsp;ws://IP\_DU\_RPI:1443&nbsp;›,  
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...

```

Dann, gladys/front/npm start

`Compiled successfully!`

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [24. Mai 2020 um 09:30 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/99 "2020-05-24T09:30:44Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![benPi](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/b/53a042/32.png) [@benPi](https://community.gladysassistant.com/u/benPi)\
**Post date:** [24. Mai 2020 um 09:52 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/100 "2020-05-24T09:52:29Z")

</div>

Vielen Dank, jetzt verstehe ich besser!

Ü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.

Jedenfalls funktioniert es!

---

<div class="post-metadata">

**Author:** ![benPi](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/b/53a042/32.png) [@benPi](https://community.gladysassistant.com/u/benPi)\
**Post date:** [24. Mai 2020 um 10:02 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/101 "2020-05-24T10:02:00Z")

</div>

@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 «&nbsp;Anpassen&nbsp;»-Button wie im Beispiel unten).

Ich habe absichtlich meine «&nbsp;Newbie&nbsp;»-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:** «&nbsp;Sie finden es hier…&nbsp;», 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 «&nbsp;nicht verbunden, Fehler, es ist kein Arduino auf dev/ttyAMA0&nbsp;» anzeigen

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3890ae7b8c7994fb1aad7f12a438b8c6a37790d9.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/a/ac1e3621ffc42b9f8a97a77ed43e82b2a75e1f57.png)  
[EDIT] Tatsächlich ist kein Arduino angeschlossen, daher sollte «&nbsp;Arduino verbunden&nbsp;» nicht angezeigt werden.  
Sollte es eher «&nbsp;USB verbunden&nbsp;» 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: «&nbsp;Achtung, Sie werden den letzten Code in Ihrem Arduino verlieren.&nbsp;»

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 (‹&nbsp;Position&nbsp;› = ‹&nbsp;180&nbsp;›). 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 «&nbsp;Anpassen&nbsp;» 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).**

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/a/a2c18c98554d0e5e0a533cbe3abe0ed787d2562d.png)

DATAPIN: Achten Sie darauf, dass bestimmte Pins nicht mit einer bestimmten Aktion kompatibel sind

Gibt es eine «&nbsp;Warnung&nbsp;», wenn ein PIN zweimal ausgewählt wird? «&nbsp;Warnung: Daten-Pin 7 wird zweimal verwendet, das könnte ein Fehler sein und Ihrem Gerät schaden&nbsp;»

IR SENDEN: Wenn ich das «&nbsp;Protokoll&nbsp;» des IR-Sendens ändern möchte, sollte ich das können.

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/69866ab4bade5a9b9c2a3fdfde3e3d9198697416.png)

Zwei unterschiedliche Längen können zu Verwirrung führen.

Für Arduino-Geräte: Ein Dropdown-Menü wäre interessant, um die Einrichtung jedes Geräts nach der Konfiguration zu verkürzen.

---

<div class="post-metadata">

**Author:** ![billona](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/billona/32/4330_2.png) [@billona](https://community.gladysassistant.com/u/billona)\
**Post date:** [24. Mai 2020 um 11:52 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/102 "2020-05-24T11:52:48Z")

</div>

> [@benPi](#):
>
> C’est super! ça marche tout seul!

Perfekt, wenn es funktioniert 😄

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.

> [@benPi](#):
>
> 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.

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.

> [@benPi](#):
>
> Vorschlag (das Beste): Wenn du auf „Anpassen“ klickst, wird dir der Rohcode (wie die Skripte) angezeigt, der an den Arduino gesendet wird und den du dann anpassen kannst (mit dem Risiko, dass es danach nicht mehr funktioniert).

Das ist eine super Idee, ich füge das zu meiner Roadmap hinzu. Sobald alles fertig ist, werde ich daran arbeiten 😉

> [@benPi](#):
>
> EMIT IR: Wenn ich das „Protokoll“ der IR-Übertragung ändern möchte, sollte ich das können.

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.

> [@Terdious](#):
>
> Ich kann weder Karte noch Gerät löschen.

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.

> [@Terdious](#):
>
> Übrigens kann ich seit dem Update nach deinem Beitrag keine Tests mehr durchführen, er erkennt die Karten nicht, die aber durch den Befehl `dmesg -s 1024` angezeigt werden, 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:

Das ist auch wirklich seltsam. Vielleicht liegt es an den letzten Änderungen der API und der DB?

> [@Terdious](#):
>
> Außerdem sehe ich, dass der PIN für den Empfang nicht mehr angeboten wird.

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 😄

---

<div class="post-metadata">

**Author:** ![benPi](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/b/53a042/32.png) [@benPi](https://community.gladysassistant.com/u/benPi)\
**Post date:** [24. Mai 2020 um 12:31 UTC](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154/103 "2020-05-24T12:31:13Z")

</div>

> [@benPi](#):
>
> // SERVICE SERVO: void setServo(int angle,int pin) { // set the servo position myServo.attach(pin); // attaches the servo on pin 9 to the servo object myServo.write(angle); }

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 🙂)

> **[commande pour déterminer les ports d'un périphérique (comme / dev / ttyUSB0)](https://qastack.fr/unix/144029/command-to-determine-ports-of-a-device-like-dev-ttyusb0)**
>
> \[Solution trouvée!\] Je ne suis pas tout à fait certain de ce que vous demandez. Vous mentionnez 'port'…

[Vorherige Seite](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154.md?page=4)

[Nächste Seite](https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154.md?page=6)
