ESP8266 mit ESPEasy in wenigen Minuten an Fhem anbinden

Begonnen von Reinhart, 26 Dezember 2015, 10:33:51

Vorheriges Thema - Nächstes Thema

Mexx13

Hallo,
so ein Projekt mit der Füllstandmessung in der Zisterne schwebt mir schon seit Anfang des Jahres durch den Kopf. Super ,,Franz Tenbrock", das du es so verständlich  dokumentiert hast.  :) Es stecken auch schon seit Wochen einige Bauteile auf dem Steckbrett, leider funktioniert es noch nicht so wie es soll. Ich habe nämlich auch noch vor die Wassertemperatur zu messen, der ESP hat ja noch genug frei GPIO's die auch verwendet werden wollen.  ;) Leider bin ich wegen logistischen Gründen auf einen reinen Batteriebetrieb angewiesen. Zurzeit bin ich auf der Suche nach der richtigen Stromversorgung. Wahrscheinlich wird's so ein Modelbau-Akkupack werden(vielleicht mit Solarzellen wieder zum aufladen). Ich will die Stromversorgung mit einem ATtiny85 alle 5 Minuten regeln wie es ,,MadMax-FHEM" macht. Dazu brauche ich noch eine Akku Spannungs Überwachen, um Rückschlüsse auf den Akkuladestand zu erhalten. Ich denke ich habe mir einiges Vorgenommen. :-D

Jetzt steht das Programmieren das ATtiny85 an, so etwas habe ich noch nicht gemacht. Ich hoffe er Zickt nicht so rum wie ich es vom ESP gewohnt bin. >:(

Liebe Grüße,
Max
Fronius Gen24 8.0 Plus, BYD HVM 11.0, Ochner Europa 333 Genius, USR W630 Modbus RTU to TCP, Fritzbox
Raspberry PI, DB-Log, Open-VPN, Jeelink-LaCrosse, Signalduino-WH1080, Busware SCC, CUL 868MHz -Homematic, ESP8266,...

MadMax-FHEM

Hi Max,

ja klingt nach einiger Arbeit ;-)

Ich hab das bis auf Solar (weil es bei mir da wo er hin muss dunkel ist ;-)  ) ja alles durch...

Ohne Solar oder wieder aufladen ist es wohl nix mit Batterie-/Akkubetrieb...
...leider.

Zitat
Jetzt steht das Programmieren das ATtiny85 an, so etwas habe ich noch nicht gemacht. Ich hoffe er Zickt nicht so rum wie ich es vom ESP gewohnt bin.

Ich schau mal, ob ich meins noch finde...
...vielleicht hilft's.

War aber nicht so schwer.

Ich würde die BrownOut Detection deaktivieren, dann ist der Stromverbrauch des ATtiny fast nicht messbar...

Er schaltete bis auf 1,8V sauber den FET durch.
Allerdings waren dann die StepUp/Down Module der begrenzende Faktor...
...und der Stromhunger des ESP beim "Booten"...

Viel Erfolg, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#272
Gefunden.

Allerdings habe ich einiges rumprobiert...
...zuletzt dann 2-Stufig.

Also zuerst die StepUp/Down Module damit dann den Elko geladen und dann erst den ESP...

Wollte noch einbauen, dass der ESP meldet, wenn er fertig ist, dass ich dann auch früher ausschalte.
So habe ich halt gemessen wie lange es im Schnitt dauert und halt abgeschaltet...

Wenn der ESP früher fertig war, ging er schon mal in Sleep...

Die Schaltung war so ähnlich wie hier (bzw. halt "ganz normal" per FET geschaltet):

http://forum.arduino.cc/index.php?topic=132977.0

Ich habe halt 2 davon, eine für die StepUp/Down Module und eine dann um den ESP einzuschalten...

Wenn nicht 2-Stufig, dann nat. nur einen und dann reicht auch ein Ausgang, eh klar ;-)

Hier der letzte Code den ich noch gefunden hab:

da ich unterEclipse entwickle (Arduino-IDE nur zum Compilieren nutze) habe ich ein "normales" C/C++ Projekt...

ATtiny85WakeUpESP8266.h:


// Only modify this file to include
// - function definitions (prototypes)
// - include files
// - extern variable definitions
// In the appropriate section

#ifndef _ATtiny85WakeUpESP8266_H_
#define _ATtiny85WakeUpESP8266_H_
#include "Arduino.h"
//add your includes for the project ATtiny85WakeUpESP8266 here
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>


//end of add your includes here
#ifdef __cplusplus
extern "C" {
#endif
void loop();
void setup();
#ifdef __cplusplus
} // extern "C"
#endif

//add your function definitions for the project ATtiny85WakeUpESP8266 here

void system_sleep();
void setup_watchdog(int ii);

//Do not add code below this line
#endif /* _ATtiny85WakeUpESP8266_H_ */



ATtiny85WakeUpESP8266.cpp:


// Do not remove the include below
#include "ATtiny85WakeUpESP8266.h"

#define TRIGGER_PIN_1 0
#define TRIGGER_PIN_2 1

#define LED_PIN       2

// secs to wait/sleep
#define MAX_LOOP 600  // 10min
//#define MAX_LOOP 180  // 3min
//#define MAX_LOOP 30  // 30sec
//#define MAX_LOOP 10  // 10sec
// milli secs to give life to ESP
#define ON_TIME_STAGE_1 5000
#define ON_TIME_STAGE_2 6000
//#define ON_TIME 2000

#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off) / saves ~230uA
#define adc_enable()  (ADCSRA |=  (1<<ADEN)) // re-enable ADC

volatile int f_wdt = 1;
volatile int iLoopCount = 0;

ISR(WDT_vect)
{
  if(f_wdt == 0)
  {
    f_wdt=1;
  }
  else
  {
//    Blink(2, 1000);
  }
}

//The setup function is called once at startup of the sketch
void setup()
{
// Add your initialization code here
pinMode(LED_PIN,OUTPUT);
pinMode(TRIGGER_PIN_1, OUTPUT);
pinMode(TRIGGER_PIN_2, OUTPUT);

adc_disable();

setup_watchdog(6); //Setup watchdog to go off after 1sec

// digitalWrite(TRIGGER_PIN, HIGH); // must be set to HIGH otherwise ESP will stop working...
}

// The loop function is called in an endless loop
void loop()
{
//Add your repeated code here
  if(f_wdt == 1)
  {
  if(iLoopCount++ > MAX_LOOP)
  {
    /* Toggle the LED */
//   digitalWrite(TRIGGER_PIN, LOW);
//   delay(1000);
  digitalWrite(TRIGGER_PIN_1, HIGH);
  delay(ON_TIME_STAGE_1);
  digitalWrite(TRIGGER_PIN_2, HIGH);
  delay(ON_TIME_STAGE_2);
  digitalWrite(TRIGGER_PIN_1, LOW);
  digitalWrite(TRIGGER_PIN_2, LOW);

  iLoopCount = 0;
  }

    /* Don't forget to clear the flag. */
    f_wdt = 0;

    /* Re-enter sleep mode. */
    system_sleep();
  }
  else
  {
    /* Do nothing. */
//   Blink(2,100);
  }
}

//****************************************************************
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii)
{

  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
  ww=bb;

  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCR = bb;
  WDTCR |= _BV(WDIE);
}

//****************************************************************
// set system into the sleep state
// system wakes up when wtchdog is timed out
void system_sleep()
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable();

sleep_mode();                        // System sleeps here

sleep_disable();                     // System continues execution here when watchdog timed out
}



Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Franz Tenbrock

mir reicht es wenn die Zisterne 1x am Tag den Wasserstand übermittelt.  Bei 10000 Litern ändert sich da nichts so schnell.
Ev einfach mit Schalter Messung auslösen, dann sollte Batterie doch ewig halten
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

MadMax-FHEM

Hi Franz,

der ATTtiny ist ja quasi der Schalter ;-)

Da ich mal mit Hum/Temp ins Rennen bin wollte ich dann doch so alle 3min einen Wert...
...bei alle 10min ging's dann so nen Monat gut mit ner Powerbank...

Mein Tank hat 150L und da wollte ich dann schon so alle halbe Stunde/Stunde einen Wert...
...gut vielleicht auch übertrieben, letztendlich würde da wohl einmal am Tag auch gereicht haben...

Bei 1x am Tag sollte es "ewig halten" ;-)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Mexx13

Hy Joachim,
der ATtiny85 läuft und läuft und er hört nicht mehr auf  ;D DANKE!

Aber dafür nervt mich der ESP wieder, mit den unterschiedlichen Versionen, Bibliotheken und nicht zu vergessen die Arduino IDE Versionen. Vielleicht ersetze ich ihn gegen einen NodeMcu oder der gleichen, dann fallen ein paar Fehlerquellen weg. Ich habe bemerkt das die neue EasyESP Version R108 nur ganze Zentimetereinheiten weiterschickt, obwohl im log zb.: 4,35 cm steht. Da werde ich dann wohl die R78 nehmen müssen. Andererseits haben die Module eh nicht so die sonderliche Genauigkeit. Mal sehn, nächste Woche finde ich wieder Zeit für ein paar Spielereien. Dieses Wochenende habe ich genug.  :P

Max
Fronius Gen24 8.0 Plus, BYD HVM 11.0, Ochner Europa 333 Genius, USR W630 Modbus RTU to TCP, Fritzbox
Raspberry PI, DB-Log, Open-VPN, Jeelink-LaCrosse, Signalduino-WH1080, Busware SCC, CUL 868MHz -Homematic, ESP8266,...

devo

Hallo Reinhart,

ZitatInstallation MQTT Broker Mosquitto am Raspberry
Die Installation beschränkt sich auf wenige Zeilen und kann zB. hier nachgelesen werden.

Leider funktioniert der angegebne Link nicht mehr. Könntest Du bitte die
Installationsschritte für den MQTT Broker aufführen.

viele Grüße von Detlev


Franz Tenbrock

cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

devo

Hallo Franz,

vielen Dank für die Link's mit deren Hilfe ich den MQTT Broker auf dem Raspberry zum laufen gebracht habe.!

Franz Tenbrock

ich hab hier so viel Hilfe bekommen, schön das meine Tipps dann auch mal geholfen haben
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Papaloewe

Nur noch ein kleiner Hinweis, den ich gerade in den Releasnotes gefunden habe:
Zitat// R117 01-08-2016
// Added support for FHEM using HTTP protocol

Im neusten Release 117 von ESPeasy enthalten.

Damit könnte man wohl auch komplett auf den MQTT Broker verzichten, denke ich.
Hat das vielleicht schon jemand ausprobiert?

Gruß
Thomas


JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Edi77

Hallo  Papaloewe

Ich habe gerade gesehen das es seit dem 10.8.16 die Firmware R120 gibt.
Wo findet man eigentlich die Releasnotes?
Mich hätte mal schon interessiert was sich geändert hat.
Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

RappaSan

Schon mal in die jeweilige __ReleaseNotes.ino reingeschaut?  :)