WeMos D1 mini als WLAN-Sensor/-Aktor

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Grunzi
Beiträge: 68
Registriert: 06.01.2014, 09:31

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von Grunzi » 22.02.2017, 22:42

@klassisch: Vielen Dank für die Links, hört sich interessant an

@Brati: Dann ist mir jetzt auch klar, wieso ich mir nen Wolf gesucht habe und zu "eriwan.exe" nichts finden konnte :D

Gruß
Roland

mfahs
Beiträge: 280
Registriert: 18.01.2011, 00:06

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von mfahs » 23.02.2017, 09:19

Hallo zusammen!

Ich habe nun endlich auch meine 18605-Akkus aus China bekommen und an meiner "Wemos-XMas-Beleuchtungs-Schaltung" weiterbasteln können. Grundsätzlich klappt es gut. Ich habe einen Wemos mit Battery-Shield verwendet, welches mit dem 18605-LiIon-Akku mit Strom versorgt wird. Daran hängt eine kleine Schaltung mit MOSFET, der vom Wemos geschaltet wird und damit die Lichterkette (die eine eigene Batterie-Stromversorgung besitzt) schaltet. Die Schaltung habe ich hier aus dem Thread von klassisch mit seinem "Pneumatischer Füllstandssensor" übernommen (Danke! - klappt gut!).
Der Wemos liegt im Tiefschlaf und wird nur alle 15 Minuten geweckt, um auf der CCU eine Variable abzufragen. Wenn die auf EIN steht, wird eben eingeschaltet, andernfalls aus. Anschließend schicke ich ihn wieder ins Bett. Wie gesagt: Aktuell klappt alles.

Jetzt stellt sich nur die Frage nach der praktischen Verwendbarkeit... Wenn ich mir den Stromverbrauch so ansehe, frage ich mich, ob das kleine Häufchen wirklich Sinn macht: Vorgestern Abend habe ich den Akku mit dem Battery-Shield voll geladen und dann die Stromversorgung abgezogen. Zunächst bot der Akku 4.2V, mittlerweile (nach etwa 1,5 Tagen) sind wir auf 3.62V runter. Im Grunde ist das ganz o.k., aber wenn das Ding jetzt noch 2 Tage durchhält bevor dann bei ca. 2,7V Schluss ist, kann ich den Wemos mit einer Akku-Ladung ca. 4 Tage laufen lassen.
In der Praxis sieht das natürlich ziemlich doof aus, wenn maximal nur 4x am Tag ein Schaltvorgang stattfinden soll aber schon nach 4 Tagen Schluss ist. Und alle vier Tage ein "Schatz, ich muss da mal ran - der Akku ist alle" kommt gar nicht gut.

Gibt es tatsächlich keinerlei Möglichkeit, den Wemos mit einem Akku (keine Autobatterie bitte! :-)) länger zu befeuern? Ich konnnte im Netz bisher nichts hilfreiches finden.
Solar ist hier in Hamburg im Winter auch nicht wirklich zielführend, da müssten die Panels schon recht groß werden...

Hat einer von Euch noch eine Idee?

Grüße,
Martin

mfahs
Beiträge: 280
Registriert: 18.01.2011, 00:06

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von mfahs » 23.02.2017, 09:26

klassisch hat geschrieben:Ich befestige die Teile immer unter einem Dach, Vordach etc. Jedenfalls Regengeschützt.
Der WeMos kommt in eine billige AP-Verteilerdose für <1EUR. der BME an ein Kabel, ca. 20 bis 30 cm lang. So daß er die Aufheizung vom WeMos nicht sieht. Als mechanischen Schutz mache ich ein metallisches Teeei aus China drum und gegen die Sonne noch eine Konservendose drüber. Boden der Konservendose nach oben und einige Löscher rein, damit die Luft etwas durchströmen kann.
Moin klassisch!
Ich habe da als "Technisches Teeei" noch was bei Ali gefunden:
https://de.aliexpress.com/item/szomk-pl ... 0.0.JF1WAT
Ich habe davon mal zwei bestellt - mal sehen, ob man die verwenden kann. Müsste passen. Nur die Farbe ist brutal :shock:

Grüße,
Martin

owill
Beiträge: 4
Registriert: 04.01.2017, 18:20

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von owill » 23.02.2017, 10:02

Hi,

Vielleicht noch einmal für alle die die CCU Variablen in "WeMos Temperatur-/Luftfeuchtesensor (Prototyp)" anpassen möchten.

Die CCU Variablen heißen hier "wemos01temp" und "wemos01feucht"

1 Neue Variablen anlegen alte ausdokumentieren

Code: Alles auswählen

// ******* Einstellungen fuer Meldungen an die CCU, bitte anpassen! *******
//String tempCCUname = "temp"; // Bezeichnung der CCU-Systemvariable für die gemessene Temperatur
//String feuchtCCUname = "feucht"; // Bezeichnung der CCU-Systemvariable für die gemessene Luftfeuchtigkeit
String wemos01temp = "wemos01temp"; // Bezeichnung der CCU-Systemvariable für die gemessene Temperatur
String wemos01feucht = "wemos01feucht"; // Bezeichnung der CCU-Systemvariable für die gemessene Luftfeuchtigkeit
2 Variable in die Meldung einsetzen

Code: Alles auswählen

 meldung = "GET /eriwan.exe?antwort1=dom.GetObject('" + wemos01feucht + "').State('" + feucht + "')";
  meldung = meldung + "&antwort2=dom.GetObject('" + wemos01temp + "').State('" + temp + "')";
  client.println(meldung); // Daten an CCU melden
so läufst bei mir

Falls das besser geht her damit

LG
Olli

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von klassisch » 23.02.2017, 16:25

mfahs hat geschrieben:Gibt es tatsächlich keinerlei Möglichkeit, den Wemos mit einem Akku (keine Autobatterie bitte! :-)) länger zu befeuern? Ich konnnte im Netz bisher nichts hilfreiches finden.
Solar ist hier in Hamburg im Winter auch nicht wirklich zielführend, da müssten die Panels schon recht groß werden...
Bin da kein Experte, weil ich Batteriebetrieb über Homematic einordne. WLAN und Batteriebetrieb paßt für mich nicht zusammen.
Es gibt hier aber einige Kolleen, die das dennoch tun. Z.B fsommer1968, aber auch andere.
Dabei wird der Spannungsregler, der recht viel Ruhestrom verbraucht, ausgebaut, spezielle LiIon Akkus mit anderer Spannungslage dann direkt angeschlossen. WLAN möglichst nur bei Bedarf eingeschaltet.
Schau mal:
viewtopic.php?f=31&t=29321&p=330650&hil ... eb#p330650

viewtopic.php?f=31&t=29321&p=284627&hil ... eb#p284627


Das Sensorgehäuse gefällt mir sehr gut. Alles dran was man braucht, Zugentlastung, Aufhängeloch. Farbe sollte enteder weiß sein oder metallisch glänzend. Und es ist doppelt so teuer wie so ein Teeei. Muß mal schauen, wie meine Teeier im Freien den Winter überstanden haben. So ein Kunststoffgehäuse wäre dann eine schöne Alternative.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von klassisch » 23.02.2017, 16:29

owill hat geschrieben:Falls das besser geht her damit
Wenn Du mit der Verwendung von Systemvariablen als Temperatur- und Feuchte-Repräsentanten zufrieden bist, nicht weiter lesen.
Mich hat gestört, daß man Systemvariablen weder einem Gewerk noch einem Raum zuordnen kann. Deshalb verwende ich CUxD Geräte und habe dann auch gleich noch absolute Feuchte und Taupunkt.
Wiees geht steht im renmet-wiki und auch mehrfach hier im Thread.

Flori
Beiträge: 102
Registriert: 10.10.2010, 11:28
Kontaktdaten:

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von Flori » 23.02.2017, 18:38

Hat schon ein mal jemand zwei BME280 Sensoren am Wemos betrieben?
Wetterdaten von meinem OC3 Kombisensor finden sich unter http://gleichen-wetter.de/

---------------------------------------------------------------------------------------------------------------
63 Kanäle in 37 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von dondaik » 23.02.2017, 18:44

nö,... dann muss auf einem die adresse geändert werden und dieses dann beim "definieren" des sensors beachtet werden..
da der bme aber immer recht nah am wemos ist macht das , für mich, keinen sinn.
wenn verschiedene temperaturen gebraucht werden dann ds20x18 .. ( zb. als sonnensensor" )
und bei rund 4 euro für den wemos lohnt nachdenken nicht wirklich :-) :-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: WeMos D1 mini als WLAN-Sensor/-Aktor

Beitrag von klassisch » 23.02.2017, 19:05

Fast. Ich war mal nahe dran und habe das mal aufgearbeitet. Und sogar die lib modifiziert und eine
BME280_MOD-1022_2sens.h
gebaut.

Code: Alles auswählen

/************************* Mod for 2 sensors ***********
* according to https://forum.arduino.cc/index.php?topic=380644.0
* In BME280_MOD-1022.h
* Comment:
* // #define addrBME280 0x76
* and add:
* extern int addrBME280;
*
* In your sketch use
* int addrBME280=0x76; // or 0x77;
* you can change it during execution
* 
* I guess, that differences in the calibration parameters are not significant.
* If not, you could make recalibration at each addressing to particular sensor.
* 
* Also you can powerup each couple of BME280(one 0x76, another 0x77) via separate ESP8266 pin. 
* So, you'll have several branches which can be switched alternatively.
* 
*/
// address of BME280 on the MOD-1022 board
/// #define addrBME280        0x76  // mod for 2 sensors 

// integer types for BME code
extern int addrBME280;
/****** end Mod for 2 sensors *************/
In dem Link
https://forum.arduino.cc/index.php?topic=380644.0
steht wie man es macht.
Habe mir noch dazu notiert:

Code: Alles auswählen

   For 2 sensors the MOD_1022 Lib has to be changed according https://forum.arduino.cc/index.php?topic=380644.0 Before measuring the BME280.readCompensationParams() has to be executed.
Wollte das mal für meine pneumatische Füllstandsanzeige nutzen. Da hätte ich 2 BME280 nebeneinander verwenden können. Habe dann aber eine Lösung mit einem BME280 gewählt. Ist unterm Strich genauer und weniger Aufwand.

Mit der Adafruit lib, die die BME280 auch zu heiß betreibt, kann man wohl nur Korrekturfaktoren für einen Sensor handeln. Empfehle die Lib eh nicht, siehe meine Messungen oben im Thread.

Wenn Du mehrere I2C Temperatursensoren betreiben möchtest, wäre der SHT31 wahrscheinlich der einfachere und schneller Weg. Die Ansteuerung des SHT31 ist einfacher und man muß keine Korrekturwerte handeln.
Laut Spec soll der SHT31 sogar noch etwas genauer sein, zumindest bei der Temp. Aber das ganze Datenblatt lesen. Da ist etwas Euphemismus drin; die wirkliche Genauigkeit muß man den Diagrammen entnehmen.
Und er hat keinen Drucksensor. In meinen o.g. Messungen ist er auch enthalten.

Edit / Nachtrag
- seit CCU2 FW 1.27.8 führen z.B. im emailText Zeilenumbrüche als "\n" kodiert zum Nichtversenden der email. Workaround: Zeilenumbruch als "%0D%0A% kodieren oder auf Zeilenumbruch ganz verzichten.
Zuletzt geändert von klassisch am 31.03.2017, 16:14, insgesamt 1-mal geändert.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Email via CCU, CUxd und email-Addon

Beitrag von klassisch » 10.03.2017, 20:34

in jenem Post habe ich beschrieben, wie man mit dem WeMos über die CCU emails versenden kann.
Diese Funktion ist sehr hilfreich und arbeitet bei mir sehr zuverlässig. Ich möchte sie nicht mehr missen.
Leider war die Installation Weg etwas umständlich. Es gibt aber einen etwas einfacheren Weg, weil das email-Addon mit dem CUxD zusammen arbeitet.
Man braucht dazu auf der CCU:
- CUxD - den hat wahrscheinlich jeder der hier gelandet ist auf der CCU. Dann dessen Anleitung.
- Das email-Addon und dessen Anleitung

Mit dem CUxD legt man ein Device (91)an und schreibt den Pfad zum email Client um. Defaultwert ist ein cloudmatic Programm, eingetragen werden muß der Pfad zum email client. Das steht in der Anleitung zum email addon in Kapitel "6.2 Mails mittels CUxD Gerätetyp 91 versenden ". Entscheidend ist
Die Zeile aus dem unteren Eingabefeld (SYSTEM|CMD_EXEC) durch folgende Zeile ersetzen: /etc/config/addons/email/email_cuxd
Es wird ein Neustart der CCU empfohlen, der bei mir allerdings nicht erforderlich war.
Eine weitere, sehr schöne Anleitung hat Christian Luetgens bereit gestellt. Dort ist auch schön beschrieben, wie die Mails in den CUxD eingespeist werden.

Die Einrichtung des email-Addons selbst ist in dessen Anleitung oder auch sehr schön bebildert auf christian-luetgens.de beschrieben.
Für den Weg über CUxD reicht das Anlegen des Accounts. Die Templates oder gar TCL wie bei meiner bisherigen Lösung werden zum Versendenen kurzer einfacher Textmails nicht gebraucht.

Im WeMos/arduino werden die email Nachrichten etwa so aufgebaut:
Definitionen

Code: Alles auswählen

/* *********  const variables for emailing via CCU + CUxD ************/
String emailTo = "My.Email@provider.com"; // my own email address
String emailSubject = "WeMos Message"; // the email subject
String emailText = "keep it short and simple"; // the text of the email.
boolean emailEnable = 1;
Die eigentliche Sendefunktion nach m.yoda / renmet-Wiki modifiziert:

Code: Alles auswählen

void mailViaCcuCuxd() { // Werte an die CCU melden here: transfer email parameters and start email program
  if (! emailEnable) ; // skip all
  else { // precondition email is enabled
    WiFiClient client; // Webclient initialisieren
    String tempstring = ""; // temporaerer string
    if (!client.connect(cfg.hostCCU, cfg.hostportCCU))
    { // mit dem CCU-Port 8181 verbinden
#ifdef FSDEBUG
      DBG_OUTPUT_PORT.println(zeitstempel() + "  Fehler: Verbindung zur CCU konnte nicht aufgebaut werden");
#endif
      delay(100);
    }


        meldung = "";
        meldung = meldung +  ""; 
        meldung = meldung + "/eriwan.exe?&antwort1=dom.GetObject('CUxD.CUX9100001:1.MAILTO').State('" +  emailTo + "')";
        meldung = meldung + "&antwort2=dom.GetObject('CUxD.CUX9100001:1.SUBJECT').State('" + emailSubject + "')";
        meldung = meldung + "&antwort3=dom.GetObject('CUxD.CUX9100001:1.TEXT').State('" + emailText + "')";
        meldung = meldung + "&antwort4=dom.GetObject('CUxD.CUX9100001:1.TYPE').State(0)"; //plain text, no HTML
        meldung = meldung + "&antwort5=dom.GetObject('CUxD.CUX9100001:1.TEMPLATEID').State(0)"; // use no template
        meldung = meldung + "&antwort6=dom.GetObject('CUxD.CUX9100001:1.SEND').State(1)"; // send command, press virtual button
    	meldung.replace(" ", F("%20")); // replaces whitespaces by %20. necessary otherwise CCU drops string. CCU cannot handle whitesspaces
        meldung = "GET " + meldung;


    client.println(meldung); // Daten an CCU melden
#ifdef FSDEBUG
    DBG_OUTPUT_PORT.println("command -String to CCU:");
    DBG_OUTPUT_PORT.println(meldung);
#endif
    delay(100);
    int i = 0;
    String zeile = "";
    while (client.available()) { // Antwort der CCU zeilenweise auslesen
      i ++;
      zeile = client.readStringUntil('\n'); // Zeitstempel der CCU ausfiltern und merken
      if (i == 7) {
        letzteMailCCUzeit = zeile;
      }
    }
#ifdef FSDEBUG
    DBG_OUTPUT_PORT.println("email an CCU uebergeben, " + letzteMailCCUzeit);
#endif
    letzteMailMillis = jetztMillis; // gemeldete Daten merken
  } // end else => emailEnable == true
} // end mail via CCU CUxD

Wie schon bei der direkten Methode war das Ersetzen von Blanks durch %20 erforderlich:

Code: Alles auswählen

meldung.replace(" ", F("%20")); // replaces whitespaces by %20. necessary otherwise CCU drops string. CCU cannot handle whitesspaces


Ich reichere den Text noch gerne mit Informationen wie Sesnorname, IP-Adresse und Zeitstempel an.

das CUxD Device 91 trägt den Namen "(91) CloudMatic" mit den Unterkapiteln
- email,
- sms,
- push,
- cloud.
Wahrscheinlich kann man auf diese Weise auch die anderen genannten Dienste vom WeMos aus nutzen.

Viel Erfolg!

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“