Hallo zusammen,
ich möchte gerne von unserem Wechselstromzähler den Zählerstand ablesen.
Da ich dies nicht ohne Umwege kann habe ich ein Modul welches im Normalfall
ein Impuls an eine Digitale Anzeige gibt, welche dann um 1 hochzählt. Jetzt möchte
ich diese Zahl aber in meiner Mysql-Datenbank mit abspeichern. Die Digitale
Anzeige bekommt dauerhaft min. 1-1,3 Volt und somit kann ich keinen Digitalen
Input nutzen. Ich habe mir nun folgendes überlegt:
#include <UIPClient.h>
#include <UIPEthernet.h>
#include <UIPServer.h>
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 }; //Locale Mac
IPAddress hostIp(192,168,178,154); //Locale IP
byte gateway[] = { 192, 168, 178, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetClient client;
int tmpImpuls = 0;
int Impuls = 0;
void setup()
{
analogReference(EXTERNAL);
pinMode(13, OUTPUT);
Serial.begin(9600);
Ethernet.begin(mac, hostIp, gateway, subnet);
Serial.print("Counter IP: ");
Serial.println(Ethernet.localIP());
delay(2000);
}
void loop()
{
delay(500);
if(checkData())
{
tmpImpuls++;
Impuls++;
digitalWrite(13, HIGH);
Serial.print(tmpImpuls);
Serial.print(" | ");
Serial.println(Impuls);
delay(4000);
digitalWrite(13, LOW);
}
if(tmpImpuls >= 10)
{
if(sendDataMysql(tmpImpuls, Impuls))
{
tmpImpuls = 0;
}
}
}
int checkData()
{
int value = analogRead(0);
if(value >= 1000)
{
return true;
}
else
{
return false;
}
}
int sendDataMysql(int tmpImpuls, int Impuls)
{
byte server[] = { 192,168,178,150 }; //mysql api
if (client.connect(server, 80)) // Verbindung zum Server aufbauen
{
client.print("GET /api/zaehler.php?token=");
client.print("847673768474687376597");
client.print("&counter=");
client.print(tmpImpuls);
client.print("&counter2=");
client.print(Impuls);
client.println(" HTTP/1.1");
client.println("Host: 192.168.178.150");
client.println("User-Agent: Arduino/Nano/3.0");
client.println();
client.stop();
Serial.println("Verbindung geschlossen...TRUE");
return true;
}
else
{
client.stop();
Serial.println("Verbindung geschlossen...FALSE");
return false;
}
}
Leider funktioniert dies nicht so ganz wie ich möchte.
Im Steckbrett versuch ging alles, doch in der Live-Anwendung
passiert eigentlich nichts. Die Serielle Schnittstelle sagt er
zählt hoch und setzt den tmpImpuls auch nach 10 mal wieder
runter auf 0, doch auch nur wen ich die Serielle-Schnittstelle
offen habe. Desweiteren kommt der Request beim Server
nicht wirklich an.