INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NODEMCU - SQL-Datenbank
29.02.2020, 22:37
Beitrag #1
NODEMCU - SQL-Datenbank
Hallo an alle Leser,

ich weiß und mir ist bewusst, dass hier einige Sachen über die Anbindung von div. Adaptern zu einer SQL-Datenbank stehen. Leider sind diese Einträge teilweise nicht mehr aktuell oder es gab änderungen.
Hier nun meine Situation:
Mein Projekt sieht vor mind. 3 RFID+nodemcu+LCD zu installieren.
rfid und lcd laufen am nodemcu. da diese drei Einheiten an Eingangstüren sollen, brauche ich einen Zugriff auf eine Datenbank. Mir selbst wäre es lieb, wenn es direkt ginge und nicht über PHP. Stand jetzt kann ich in die Datenbank schreiben. Jetzt bin ich an dem Punkt, wo ich Daten aus der Datenbank brauche und nicht weiterkomme.
Die Datenbank selbst mariaDB auf einem Raspberry4.
Code:
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
char ssid[] = "ABK14-24";                 // Network Name
char pass[] = "password";                 // Network Password
byte mac[6];
WiFiServer server(80);
IPAddress ip(192,168,9,1);
IPAddress gateway(192,168,9,1);
IPAddress subnet(255,255,255,0);
WiFiClient client;
MySQL_Connection conn((Client *)&client);
char query[] = "SELECT name, guthaben FROM adrutest.ardu_tabellle1 WHERE `rfid` = '2712'";
//char query[128];
IPAddress server_addr(192,168,9,214);          // MySQL server IP
char user[] = "sqluser";           // MySQL user
char password[] = "sqlpassword";       // MySQL password
void setup() {
  Serial.begin(9600);
  Serial.println("Initialising connection");
  Serial.print(F("Setting static ip to : "));
  Serial.println(ip);
  Serial.println("");
  Serial.println("");
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected");
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[5],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.println(mac[0],HEX);
  Serial.println("");
  Serial.print("Assigned IP: ");
  Serial.print(WiFi.localIP());
  Serial.println("");
  Serial.println("Connecting to database");
  while (conn.connect(server_addr, 3306, user, password) != true) {
    delay(200);
    Serial.print ( "." );
  }
  Serial.println("");
  Serial.println("Connected to SQL Server!");
}
void loop() {
  row_values *row = NULL;
  long head_count = 0;
  delay(1000);
  Serial.println("1) Demonstrating using a cursor dynamically allocated.");
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);// Initiate the query class instance
    cur_mem->execute(query);                        // Execute the query
    column_names *columns = cur_mem->get_columns();   // Fetch the columns (required) but we don't use them.
  do {                                               // Read the row (we are only expecting the one)
    row = cur_mem->get_next_row();
    if (row != NULL) {
      head_count = atol(row->values[0]);
    }
    } while (row != NULL);
   delete cur_mem;                                   // Deleting the cursor also frees up memory used
  Serial.println(query);
  // Show the result
  Serial.print("Name/Guthaben = ");
  Serial.println(head_count);
  delay(500);

  Serial.println("2) Demonstrating using a local, global cursor.");
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);// Initiate the query class instance
  cur_mem->execute(query);                   // Execute the query
  // Fetch the columns (required) but we don't use them.
  cur_mem->get_columns();
  // Read the row (we are only expecting the one)
  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
      head_count = atol(row->values[0]);
    }
  } while (row != NULL);
  // Now we close the cursor to free any memory
  delete cur_mem;

  // Show the result but this time do some math on it
  Serial.print("Name/Guthaben: ");
  Serial.println(head_count);
}
Das Ergebnis auf dem Serial-Monitor ist:

Setting static ip to : 192.168.9.1
Connecting to ABK14-24
.
WiFi Connected
MAC: CD:2D:63:BC:FA:EC
Assigned IP: 192.168.9.1
Connecting to database
...
Connected to SQL Server!
1) Demonstrating using a cursor dynamically allocated.
SELECT name, guthaben FROM adrutest.ardu_tabellle1 WHERE `rfid` = '2712'
Name = 0
2) Demonstrating using a local, global cursor.
Exception (9):
epc1=0x40201561 epc2=0x00000000 epc3=0x00000000 excvaddr=0x6563697e depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffdc0 end: 3fffffc0 offset: 01a0
3fffff60: 00000000 0000002e 3ffee5d0 40203b94.....geht hier noch weiter!

Wer kann / könnte mir da weiterhelfen oder einen Tipp geben?
Den SQL-Code habe ich schon in der DB direkt getestet und er funktioniert!

Gruß aus dem Schwarzwald
Andy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.02.2020, 23:13 (Dieser Beitrag wurde zuletzt bearbeitet: 29.02.2020 23:14 von Tommy56.)
Beitrag #2
RE: NODEMCU - SQL-Datenbank
Du vermischst 2 Beispiele zur Nutzung der Lib.
Lass den Teil
Code:
Serial.println("2) Demonstrating using a local, global cursor.");
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);// Initiate the query class instance
  cur_mem->execute(query);                   // Execute the query
  // Fetch the columns (required) but we don't use them.
  cur_mem->get_columns();
  // Read the row (we are only expecting the one)
  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
      head_count = atol(row->values[0]);
    }
  } while (row != NULL);
  // Now we close the cursor to free any memory
  delete cur_mem;

  // Show the result but this time do some math on it
  Serial.print("Name/Guthaben: ");
  Serial.println(head_count);
weg.
Ergänze folgendes (ungetestet):
Code:
Serial.println("1) Demonstrating using a cursor dynamically allocated.");
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);// Initiate the query class instance
    cur_mem->execute(query);                        // Execute the query
    column_names *columns = cur_mem->get_columns();   // Fetch the columns (required) but we don't use them.
do {                                               // Read the row (we are only expecting the one)
    row = cur_mem->get_next_row();
    if (row != NULL) {
      Serial.print("Name: ");
      Serial.println(row->values[0]);  // <--- der Name als Zeichenkette
      Serial.print("Guthaben: ");
      Serial.println(atof(row->values[1])); // <---- das Guthaben umwandeln in float (du wirst damit rechen wollen)
    }
    } while (row != NULL);

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.02.2020, 23:23
Beitrag #3
RE: NODEMCU - SQL-Datenbank
Danke für die rasche Antwort....werde es morgen testen!!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.03.2020, 12:15
Beitrag #4
RE: NODEMCU - SQL-Datenbank
Hallo Tommy,

ich habe Deine Änderung 1:1 so umgesetzt. Bin absolut begeistert-es funktioniert.

Hier nun auch der komplette code
Code:
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
char ssid[] = "ABK14-24";                 // Network Name
char pass[] = "abernauer271269#%";                 // Network Password
byte mac[6];
WiFiServer server(80);
IPAddress ip(192,168,9,1);
IPAddress gateway(192,168,9,1);
IPAddress subnet(255,255,255,0);
WiFiClient client;
MySQL_Connection conn((Client *)&client);
char query[] = "SELECT name, guthaben FROM adrutest.ardu_tabellle1 WHERE `rfid` = '2712'";
//char query[128];
IPAddress server_addr(192,168,9,214);          // MySQL server IP
char user[] = "rfid";           // MySQL user
char password[] = "rfid";       // MySQL password
void setup() {
  Serial.begin(9600);
  Serial.println("Initialising connection");
  Serial.print(F("Setting static ip to : "));
  Serial.println(ip);
  Serial.println("");
  Serial.println("");
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected");
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[5],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.println(mac[0],HEX);
  Serial.println("");
  Serial.print("Assigned IP: ");
  Serial.print(WiFi.localIP());
  Serial.println("");
  Serial.println("Connecting to database");
  while (conn.connect(server_addr, 3306, user, password) != true) {
    delay(200);
    Serial.print ( "." );
  }
  Serial.println("");
  Serial.println("Connected to SQL Server!");  
}
void loop() {
  row_values *row = NULL;
  long head_count = 0;
  delay(1000);
  Serial.println("1) Demonstrating using a cursor dynamically allocated.");
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);// Initiate the query class instance
    cur_mem->execute(query);                        // Execute the query
    column_names *columns = cur_mem->get_columns();   // Fetch the columns (required) but we don't use them.
  do {                                               // Read the row (we are only expecting the one)
    row = cur_mem->get_next_row();
    if (row != NULL) {
      Serial.print("Name: ");
      Serial.println(row->values[0]);  // <--- der Name als Zeichenkette
      Serial.print("Guthaben: ");
      Serial.println(atof(row->values[1])); // <---- das Guthaben umwandeln in float (du wirst damit rechen wollen)
    }
    } while (row != NULL);
   delete cur_mem;                                   // Deleting the cursor also frees up memory used
  Serial.println(query);
   delay(500);
}

Lieben Dank für Deine Hilfestellung, nun kann es weitergehen mit meinem Projekt!

Gruß Andy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.03.2020, 12:23
Beitrag #5
RE: NODEMCU - SQL-Datenbank
Schön, das es funktioniert und danke für die Rückmeldung.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.03.2020, 20:01
Beitrag #6
RE: NODEMCU - SQL-Datenbank
Hallo,

dank Eure Hilfe bin ich ein ganzen Stück weitergekommen.

Code:
char SELECT[] = "SELECT * FROM RFID.User WHERE `UID` = '017014219821'";

sende ich bisher die Anfrage ab. Nun sollte aber UID variable sein!

Wer könnte da helfen?
Kann auch den ganzen Script mal posten ist aber ziemlich lang!

Gruß
Andy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.03.2020, 20:14 (Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2020 20:20 von Tommy56.)
Beitrag #7
RE: NODEMCU - SQL-Datenbank
Bei SELECT * solltest Du aufpassen, wenn Du die Tabelle änderst oder nicht alle Felder brauchst.

Ansonsten hast Du 2 Varianten:

1. mit strcpy und strcat (hier habe ich ein paar Infos zur Arbeit mit Zeichenketten geschrieben - die kannst Du trotzdem lesen Wink )

2. mit snprintf_P (der elegantere Weg)
Code:
// global
char stmt[100]; // <-- Anpassen an Dein längstes Statement
// Deine UserId
char uid[20]= "12343567"; // <---- Länge anpassen
snprintf_P(stmt, sizeof(stmt),PSTR("SELECT * FROM RFID.User WHERE UID = '%s'"),uid);
// in stmt steht Dein komplettes SQL.
Serial.println(stmt);
Hier sind die Formatierungsoptionen der printf-Familie. Float geht auf ESP, aber nicht auf AVR.

PSTR steht im Flash und snprintf_P holt den Formatstring von dort.
Die ' ' um den Feldnamen kannst Du weg lassen.

Gruß Tommy

Edit: Das ganze ungetestet. Wer Tippfehler findet, darf sie behalten.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.03.2020, 20:49
Beitrag #8
RE: NODEMCU - SQL-Datenbank
Macht glaub Sinn mal alles zu Posten.
Danke für die info nur bekomme ich da Fehlermeldungen.
Code:
#include <ESP8266WiFi.h>     //Include Esp library
#include <WiFiClient.h>
//#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <SPI.h>
#include <MFRC522.h>        //include RFID library
#include <LiquidCrystal_I2C.h>
//#include <ArduinoJson.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
//#include <time.h>
//#include <WiFiUdp.h>

#define SS_PIN D8 //RX slave select
#define RST_PIN D3

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
LiquidCrystal_I2C lcd(0x27, 20, 4);

/* Set these to your desired credentials. */
const char *ssid = "SSID";  //ENTER YOUR WIFI SETTINGS
const char *password = "PWD";

//Web/Server address to read/write from
const char *host = "192.168.9.214";   //IP address of server
byte mac[6];
char CardID[20]="0";
char RFID[20]="017014219821";
String Uname="1";
String UBerechtigung="";
String UDatumv="";
String UDatumB="";
int UHET=0;
int UDGT=0;
int UEGT=0;
int Ur1=0;
int Ur2=0;
int Ur3=0;
int Ur4=0;
int Ur5=0;
int Ur6=0;

WiFiClient client;
MySQL_Connection conn((Client *)&client);
//char SELECT[] = "SELECT * FROM RFID.User WHERE `UID` = '017014219821'";
char INSERT_SQL[] = "INSERT RFID.log_anfrage(UID, Door, Datum) VALUES ('017014219821', 'HET', now())";
char INSERT_SQL1[] = "INSERT RFID.log(UID, Door, Name, Ergebnis, wann) VALUES ('017014219821', 'HET', 'Name', 'Ergebnis', now())";

char query[128];
IPAddress server_addr(192,168,9,214);          // MySQL server IP
char user[] = "sqluser";           // MySQL user
char password1[] = "sqlpasswort";       // MySQL password

void setup() {
  delay(1000);
  Serial.begin(115200);
  SPI.begin();  // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522 card
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot  
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");
  Serial.print("Connecting to ");
  Serial.print(ssid);
  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Connecting to: ");
  lcd.setCursor(0,1);
  lcd.print(ssid);
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  lcd.print(".");
  }
  SPI.begin();
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("Connected");
  lcd.setCursor(0,2);
  lcd.print("Connected to:");
  lcd.setCursor(0,3);
  lcd.print("IP: ");
  lcd.print(WiFi.localIP());  
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
  Serial.println("Connecting to database");
  while (conn.connect(server_addr, 3306, user, password1) != true) {
  delay(200);
  Serial.print ( "." );
  lcd.setCursor(0,0);
  lcd.print("Connecting SQL: ");  
  }
  Serial.println("");
  Serial.println("Connected to SQL Server!");
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("mit SQL-Verbunden");
  Serial.println("CARD: ");
  Serial.print(CardID);
}

void loop() {
  row_values *row = NULL;
  long head_count = 0;
  if(WiFi.status() != WL_CONNECTED){
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);
    Serial.print("Reconnecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
    Serial.println("");
    Serial.println("Connected");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());  //IP address assigned to your ESP
  }
if (CardID == "0") {
lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("    WELCOME/HALLO     ");      
      lcd.setCursor(6, 1);
      lcd.print(":");
      lcd.setCursor(9, 1);
}
  //look for new card
   if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;//got to start of loop if there is no card present
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
  return;//if read card serial(0) returns 1, the uid struct contians the ID of the read card.
}

for (byte i = 0; i < mfrc522.uid.size; i++) {
    CardID += mfrc522.uid.uidByte[i];
}

if ((CardID) >= "0") {
    lcd.clear();
    Serial.print("Karte: ");
    Serial.println(CardID);
    lcd.setCursor(0,0);
    lcd.print("Karte: ");
    lcd.print(CardID);
    lcd.setCursor(0,1);
    lcd.print("Bitte warten");
    lcd.setCursor(0,2);
    lcd.print("Datenpruefung!!!");
    Serial.println(RFID);
    Serial.println(INSERT_SQL);
    int soil_hum = 1024;
    delay(2000);
    snprintf_P(SELECT, sizeof(SELECT),PSTR("SELECT * FROM RFID.User WHERE UID = '%s'"),'CardID');
    Serial.println(SELECT);
    Serial.println("Recording data.");
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
    cur_mem->execute(INSERT_SQL);
    cur_mem->execute(SELECT);
    column_names *columns = cur_mem->get_columns();
    do {                                          
      row = cur_mem->get_next_row();
     if (row != NULL) {
      Serial.print("lfd_nr: ");
      Serial.println(row->values[0]);  // <--- der Name als Zeichenkette
      Serial.print("UID: ");
      Serial.println(row->values[1]);  // <--- der Name als Zeichenkette
      Serial.print("Name: ");
      Serial.println(row->values[2]);  // <--- der Name als Zeichenkette
      Uname=(row->values[2]);
      Serial.print("Berechtigung: ");
      Serial.println(row->values[3]);  // <--- der Name als Zeichenkette
      UBerechtigung=(row->values[3]);
      Serial.print("Datum von: ");
      Serial.println(row->values[4]);  // <--- der Name als Zeichenkette
//      UDatumv=(row->values[4]);      
      Serial.print("Datum bis: ");
      Serial.println(row->values[5]);  // <--- der Name als Zeichenkette
//      UDatumb=(row->values[5]);      
      Serial.print(("HET: "));
      Serial.println(row->values[6]);  // <--- der Name als Zeichenkette
      UHET=atof((row->values[6]));      
      Serial.print("DGT: ");
      Serial.println(row->values[7]);  // <--- der Name als Zeichenkette
      UDGT=atof((row->values[7]));      
      Serial.print("EGT: ");
      Serial.println(row->values[8]);  // <--- der Name als Zeichenkette
      UEGT=atof((row->values[8]));      
      Serial.print("r1: ");
      Serial.println(row->values[9]);  // <--- der Name als Zeichenkette
      Ur1=atof((row->values[9]));      
      Serial.print(("r2: "));
      Serial.println(row->values[10]);  // <--- der Name als Zeichenkette      
      Ur2=atof((row->values[10]));
      Serial.print("r3: ");
      Serial.println(row->values[11]);  // <--- der Name als Zeichenkette
      Ur3=atof((row->values[11]));
      Serial.print("r4: ");
      Serial.println(row->values[12]);  // <--- der Name als Zeichenkette
      Ur4=atof((row->values[12]));
      Serial.print("r5: ");
      Serial.println(row->values[13]);  // <--- der Name als Zeichenkette
      Ur5=atof((row->values[13]));
      Serial.print("r6: ");
      Serial.println(row->values[14]);  // <--- der Name als Zeichenkette
//      Ur6=atof((row->values14]));
     Serial.println(Uname);
      
      lcd.setCursor(0,0);
      lcd.print("Karte: gefunden!    ");
      lcd.setCursor(0,3);
      lcd.print("Hallo ");
      lcd.print(Uname);
      lcd.setCursor(0,2);
      lcd.print("Datenpruefung!!!");      
      }
//      Serial.print("Guthaben: ");
//      Serial.println(atof(row->values[1])); // <---- das Guthaben umwandeln in float (du wirst damit rechen wollen)
      } while (row != NULL);
      Serial.println(Uname);
      if (Uname = "1") {
      lcd.setCursor(0,1);
      lcd.print("Karte nicht gefunden");
      lcd.setCursor(0,2);
      lcd.print("Zutritt verweigert!");
      delay(3000);
      }
      delete cur_mem; // Deleting the cursor also frees up memory used
      CardID="0";
}

}
//=======================================================================

Die Fehlermeldung in Arduino ist:
incompatible type in assignment of 'byte {aka unsigned char}' to 'char[20]'
bei dieser Zeile:
CardID += mfrc522.uid.uidByte[i];

Gruß Andy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Lightbulb SPIFFS DOWNLOAD UPLOAD & DELETE Esp8266 NodeMCU Fips 31 24.331 05.09.2020 19:59
Letzter Beitrag: guenni71
Brick 2 NodeMCU zum Fernsteuern von Relais ntz616616 4 642 07.08.2020 07:31
Letzter Beitrag: hotsystems
  ESP32 NodeMCU: Status der SD-Karte georg1010 0 616 15.07.2020 12:18
Letzter Beitrag: georg1010
  NodeMCU steuert UNO/NANO über I2C Tommy56 21 20.108 12.07.2020 17:43
Letzter Beitrag: daniel_hh
  Erster Versuch mit "ESP8266 NodeMCU V3" Mathias 6 1.095 03.07.2020 18:14
Letzter Beitrag: Mathias
  ESP8266 DHT22,SDS011, MYSQL Datenbank und veröffentlichen von Live werten. Bilderberg2020 15 1.852 07.06.2020 15:18
Letzter Beitrag: Tommy56
  ESP32 NodeMCU: Versorgung mit USB und EXT 5V georg1010 7 1.049 03.05.2020 21:00
Letzter Beitrag: hotsystems
  NodeMCU V3 + rhGeiger ak68 19 2.817 17.04.2020 07:35
Letzter Beitrag: Fips
  NodeMCU -KNX ak68 4 1.285 12.04.2020 10:22
Letzter Beitrag: ak68
  nodemcu - ota abernauer 12 1.697 11.04.2020 13:21
Letzter Beitrag: abernauer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste