Datenbankeinträge bzw. php-strings witer verarbeiten

Hallo in die Runde,
Ich hoffe Ihr könnt mir weiterhelfen.

Und zwar geht es darum das ich für mein Projekt gerne drei Werte dem Arduino per Fernabruf zukommen lassen möchte bzw ändern wenn sich gegebenheiten ändern.

Konkret geht es darum das ich den 1.Wert als char brauche und Wert 2 und 3 müssten unsigned long sein da es sich um die delays handelt.

Diese Daten müssen auch nicht dauerhaft abgefragt werden sondern immer nur dann wenn ich dem Arduino per Telegram den Befehl gebe.

Als Quelle habe ich einerseits eine SQL Datenbank und als 2. Möglichkeit eine php-Seite die diese Einträge augeben kann. Die php könnte in ihrer Ausgabe angepasst werden wie es dann am besten ist.
Ob zb als 1 Kette die alle Werte hintereinander mit einem Trennzeichen trennt oder wenn ihr sagt 3 einzelne Zeilen sind einfacher zu verarbeiten.

ICh habe die letzten Tage so vieles gelesen und so viel verschiedene Ansätze gesehen das ich langsam nicht mehr durchblicke.

Mfg Nico

Das sind doch quasi ideale Zustände.

Ob zb als 1 Kette die alle Werte hintereinander mit einem Trennzeichen trennt oder wenn ihr sagt 3 einzelne Zeilen sind einfacher zu verarbeiten.

Mache es so, wie es dir am einfachsten erscheint!

Ich selber verwende gerne das Format des CMDMessenger.

Willst du die Daten zum Arduino pushen oder soll der Arduino sich die Daten von wo pullen???
Der Arduino hat ein Ethernet Shield oder wie baust du eine Verbindung auf?
Was verstehst du unter Telegram?

Mit Telegram ist der Telagram Messenger gemeint in dem der Arduino (bzw genaugenommen ist es aktuell ein Wemos D1 mini) als Bot eingebunden ist und er komuniziert auch schon mit mir.
Im grunde steht das Script ja schon aber wenn ich zb die ChatID ändern möchte auf die er hört oder den delay für eine Pinansteuerung würde ich ges gerne aus der Ferne machen wollen.

Abrufen der Daten mache ich bisher per http.Get aber bekomme dann nur einen String zurück...
Entweder diesen zerlegen und dann die Einzelteile in char und unsigned long wandeln oder eben ihr hättet eine andere Alternative.
Kann ja sein das es viel einfacher geht direkt aus der Datenbank die Werte zu ziehen...

Möglich ist einiges, Zeilengetrennt, CSV, JSON, ...
für JSON müsstest auch eine Lib finden.
Direktzugriff auf mySQL war die Tage mal im Forum, suche zurück ... ich wetter unter 2 Wochen.

Knackpunkt aktuell ist ja das Ich 2 verschiedene Typen brauche. In meinem Sketch gibt es schon einen Abruf der aus dem getString mittels int xxx atoi(yyy.c_str ()) zu einem Vergleichsoperator gemacht wird.Das klappt auch.. Ist aber leider kein char oder long.
Habe in einem anderen Beitrag hier auch die Funktion mit atoi (strtok(... gefunden um ein String an einem bestimmten Zeichen zu trennen, ergibt aber auch leider nur ein int.

Entweder müsste ich den int dann weiter zu char&long wandeln oder es gibt eine Funktion die es direkt in eins der beiden teilt.

Ich denke das es die sache einfacher macht die drei Werte einzelnstehend auszulesen und nur die Ergebnisse zu wandeln.
Nur bisher bin ich mit den Typen nicht so genau vertraut welcher wie und wo welcher angewendet wird..

Habe in einem anderen Beitrag hier auch die Funktion mit atoi (strtok(... gefunden um ein String an einem bestimmten Zeichen zu trennen, ergibt aber auch leider nur ein int.

Tipp: Nicht im Forum suchen, sondern in der C++ Referenz.

String conversion
atof - Convert string to double (function )
atoi - Convert string to integer (function )
atol - Convert string to long integer (function )
atoll - Convert string to long long integer (function )
strtod - Convert string to double (function )
strtof - Convert string to float (function )
strtol - Convert string to long integer (function )
strtold - Convert string to long double (function )
strtoll - Convert string to long long integer (function )
strtoul - Convert string to unsigned long integer (function )
strtoull - Convert string to unsigned long long integer (function )

Schau halt mal direkt in die AVR libc:
https://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html

Da siehst du dass es für unsigned long strtoul() gibt

Ok super danke.. Werde ich mir morgen mal durchlesen..
Fehlt mir dann ja nur der char.
Kleine zwischenfrage: Was ist ein double?

Wieso willst du für 1-Byte Integer eine extra Funktion? Da reicht auch atoi()

Kleine zwischenfrage: Was ist ein double?

Serenifly:
Wieso willst du für 1-Byte Integer eine extra Funktion? Da reicht auch atoi()

Genau das meine ich damit das ich noch nicht alle Typen genau begriffen habe.. :wink:
Ich habe die Fehlermeldung nicht genau im Kopf gerade aber in der original ino die ich dazu genommen hatte stand das so drin.. sprich char chatId = "012345678"
Da dachte ich das ich das so beibehalten müsste..

char ist etwas anderes als char*

Dir scheinen da jegliche C Grundlagen zu fehlen

Die letzte Eingabe war nicht ganz korrekt..Die eckigen Klammern fehlten
Richtig hieße es char ChatId [] = "12345"

Das ist auch etwas anderes als ein char. Das ist ein Null-terminiertes char Array, auch "C String" genannt

Diese ganzen Konvertierungs-Funktionen wie atoi() nehmen einen C String als Parameter und wandeln diesen in eine Zahl um

sscanf könnte dich begeistern

Siehe hier