EasyMeter WLAN Lesekopf

Moinsen,

da die Bastelei bei mir schon seit ca. 1/2 Jahr stabil läuft, dachte ich ich stell das mal hier rein…

Der Lesekopf auf Lochraster Platine kann so am Stromzähler eingeschoben werden.
Das Programm sendet alle 10 Sekunden, kann aber von IPS aus geändert werden, einfach den
neuen Wert in DataToSend schreiben. Dann das übliche Script RegisterVariable auswerten etc.

-Joe

EasyMeter_ESP8266.zip (323 KB)

Super Idee und Umsetzung. Den ESP8266 habe ich auch noch rumliegen… Allerdings die fix un fertig USB Developer Variante mit 5v Versorgung per Micro USB Anschluss.
Hast du zufällig ein Foto im montierten Zustand? Zwecks Befestigung usw.?

Gesendet von meinem Redmi Note 2 mit Tapatalk

Na ja, schön ist etwas anderes.:confused:
-Joe

Hallo Joe,

kannst du noch dein Script zum einlesen in die IPS posten :), und wie du das Gerät eingebunden hast.

vielen vielen Dank :slight_smile:
Gruß
Christian

<?
	if ($_IPS['SENDER'] ==  "RegisterVariable")
	{
		$data = trim($IPS_VALUE);
		if (substr($data, 0, 9) == "1-0:1.8.0")   // Zählerstand
		{
			$ar = explode("(",$data);
			SetValueFloat(48608 /*[Energie\Zählerstand]*/ ,  floatval($ar[1]));
		}
		if (substr($data, 0, 9) == "1-0:1.7.0")   // Verbrauch
		{
			$ar = explode("(",$data);
			SetValueFloat(48910 /*[Energie\Momentanverbrauch]*/ ,  floatval($ar[1]));
		}
		// evtl. Daten zu senden?
		$data = GetValueString(52864 /*[Energie Server Socket\DataToSend]*/);
		if( $data != "")
		{
		   RegVar_SendText(53403 /*[Energie Server Socket\regVar]*/, $data);
		   SetValueString(52864 /*[Energie Server Socket\DataToSend]*/,"");
		}
	}
?>

-Joe

Vielen Dank für bereitstellen :smiley:

Das kann man doch auch für einen Wasser / Gas Zäher verwenden oder ?

Kommt darauf an was die Geräte für ein Signal liefern.

Mein Gaszähler hat einen drehenden Magnet, das geht mit einem Reedkontakt.
Mein Wasserzähler ist blöd, da könnte man evtl. was mit eine Reflexionslichtschranke (CNY70) machen und
den roten rotierenden Zeiger „lesen“.

-Joe

Vielen Dank für den Schaltplan!

Ich hab allerdings mein eingenes Programm für den ESP erstellt.
Ich erzeuge einfach eine Homepage (Port 80) auf der die Werte dann gelesen werden können.
Elster.JPG
Das mach ich dann mit einem „WWW Reader“ und dem entsprechenden „Text Parser“!
Elster2.JPG
Elster3.JPG

Also ganz ohne Script.

Gruß
Schuggi

Hallo,

erstmal großes Lob an euch.

@ Schuggi Kannst du das Program, als Scatch, mit der Homepage reinstellen?

Bin gerade am Anfang mit dem ESP und Arduino und würde mir gern den Scatch angucken und nachbauen.

Mit freundliche Grüßen
Wladen

Hallo Wladen,
hier mein Arduino Sketch für den ESP8266.

#include <ESP.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPUpdateServer.h>


const String Hostname = "Elster2";
const String Version ="Elster OTA V1.00 
(C) Schuggi 2016";

ESP8266WiFiMulti wifiMulti;
ESP8266WebServer server(80);  
ESP8266HTTPUpdateServer httpUpdater;

String txt;
String txt2;

void setup(void) {
  int Timeout;

 
  Serial.begin(9600,SERIAL_7E1);
  Serial.println(Version);
  
  Serial.println("Initialized");
  WiFi.mode(WIFI_STA);
  WiFi.config(IPAddress(192,168,178,238), IPAddress(192,168,178,1), IPAddress(255,255,255,0));
  
  wifiMulti.addAP("deine SSID", "dein Kennwort");
  wifiMulti.addAP("deine SSID 2", "dein Kennwort 2");
  WiFi.hostname(Hostname);
   
  while (wifiMulti.run() != WL_CONNECTED)// Warten auf verbindung
  {
    delay(500);
    Timeout++;
    if (Timeout>100) break;
    Serial.print(".");
  }            
  
  Serial.println("connected");
  Serial.println(WiFi.SSID());
  Serial.println(WiFi.localIP()); 
  Serial.println();
  delay(2000);
  
  httpUpdater.setup(&server);
  server.on("/", Ereignis_Info);
  server.onNotFound(Ereignis_Info);
  server.begin();               // Starte den Server
  
}

void Ereignis_Info()
{
  String T = "";
  T = Version + "

";
  T = T+ "SSID:     "+WiFi.SSID()+" 
";
  T = T+ "RSSI:     "+String(WiFi.RSSI())+" 
";
  T = T+ "Hostname: "+WiFi.hostname()+" 
";
  T = T+ txt2;
  server.send(200, "text/plain", T);
}


void loop() 
{
  if (Serial.available() > 0) 
  {
     char ch = Serial.read();
     Serial.print(ch);
     if (ch=='/')
     {
      txt2=txt;
      txt="";
     }
     txt+=ch;
  }
  server.handleClient(); 
}

Falls du mehrere WLan’s hast, kannst du die in den folgenden Zeilen eintragen.

wifiMulti.addAP("deine SSID", "dein Kennwort");
wifiMulti.addAP("deine SSID 2", "dein Kennwort 2");
...

Der ESP meldet sich dann automatisch am stärksten WLan an.
Über die IP-Adresse oder den Hostnamen bekommst du die Info vom Zähler als Text geliefert.
Über „IP/update“ oder „Hostname/update“ kannst du neue Firmware einspielen.

Gruß
Schuggi

Danke für den Scetch

Hallo ich habe probleme mit dem scetch da ich keine verbindung hin bekomme, kann mir wer helfen? bin absoluter anfänger!

Mir ist da noch ein Fehler in meinem Sketch aufgefallen.

void setup(void) {
  int Timeout;

Hinter Timeout gehört ein =0

Richtig ist also!

void setup(void) {
  int Timeout=0;

Super… vielen Dank das war es:)

Wie sieht denn die Verkabelung mit einem Wemos D1 mini aus? Der hat kein CH_PD (Enable) PIN …
Muss hier RST auch belegt werden?

Moin schuggi
Könntest du den Sketch evtl so um bauen das der wemos jeden Monat die Daten auf einer Sd Card speichert? Also genau immer von Januar bis Dezember?

Hey Jungs!
Tolle Sache!
Könnt ihr den Schaltplan mit den benötigten Teilen noch mal Posten bitte?
Danke!