NEWS
S0 Signal an Wemos und ESPEasy auslesen
-
Hallo Zusammen
So einiges hab ich fürs SmartHome bereits gebaut und eingebunden, aber jetzt komm ich mit dem neuen Proekt nicht weiter.Ich habe mir den S0 Zähler von stall.biz geholt um den Wasserzähler smart zu machen.
Bisher hab ich nur mit Tasmota was gemacht.Das fällt, so wie ich das lese, hier allerdings flach.
Hab dann, für mich unbekannt, ESPeasy geflasht und mal so konfiguriert wie ich mir das dachte dass es funktioniert. Falsch gedachtper mqtt ist alles im Iobroker, nur er zählt nicht. evtl. hab ich was falsch in den Einstellungen des ESP, da für mich das was neues ist.
Für S0+ hab ich D6 benutzt.
Kann sich mal einer meine Sreenshots anschauen und prüfen ob das richtig ist. -
Hallo Jeba,
ich habe das gleiche auch versucht. Mit ESPeasy habe ich es nicht stabil hinbekommen.
Habe den gleichen Bausatz von Stall.biz und verwende ihn nun mit tasmota. Das funktioniert gut.Schau mal hier. Der Link war sehr hilfreich.
Die Werte sende ich per mqtt an den ioBroker. Jede Nacht um 0 Uhr resete ich den Zähler per rule in tasmota.
Schön ist, das die Messwerte einen Neustart des Wemos bei tasmota überstehen.Gruß tobbes
-
@tobbes
Hallo
Ich hab jetzt den ursprünglichen Fehler gefunden. Es lag am falschen Widerstand zwischen 5v und S0+. Ein neuer rein und klappte direkt.
Dein Tip war super. Tasmota ist mir lieber. Hab jetzt umgeflasht, und den „counter1“ auf D6 gelegt.
Und läuft prima.
Benutzt Du Blockly um eine Auswertung zu machen? -
Schön, dass es nun läuft.
Nein derzeit verwende ich nur blockly um die Werte an Thingspeak zu senden.
Ich hätte gerne noch eine tägliche Mail mit dem Wasserverbrauch vom Vortag.Später hätte ich gerne ein Balkendiagramm, das mir den täglichen Verbrauch darstellt.
Welche Art Auswertung möchtest Du machen?Gruß Tobbes
-
@tobbes
Der Plan ist, den Verbrauch in der Visu festzuhalten. Wochenweise und übers Jahr mitgeloggt via Diagramm. Aber bis ich zur Visu komme, wird noch dauern.
Mir fehlt die Zeit dazu.
Hab mir mal ein paar Blockly Beispiele angeschaut. Bin da noch nicht so der Profi.
Deshalb hab ich mich mal konzentriert der Reihe nach mal die Sensoren zu bauen.
Heizöltank via Ultraschall ist jetzt auch fertig. -
Hallo zusammen, verwendet ihr den Pulsecounter mit Tasmota, bzw ESPEasy ? wenn ja warum ?
-
@ChristianM Ich habe mal probehalber einen S0-Zähler mit ESPEasy aufgebaut.
Weil ich zu bequem war, meinen Wasserzähler zu duplizieren oder zu modifizieren. Und ich wollte mal ESPEasy testen.
Läuft bisher problemlos und gibg wirklich sehr schnell. Schon sehr professionell entwickelt mit einem beeindruckenden web-Interface.
Ob die Entscheidung richtig war, ist allerdings fraglich. ESPEasy hat zwar einen Summenzähler, aber der ist nicht persistent und geht bei Resets, Netzausfall etc. verloren. Ist also letztlich unbrauchbar. Deshalb muß man das in ioBroker machen. Habe es entsprechend in ioBroker programmiert. Wahrscheinlich kann man sich diese Programmierung mittlerweile sparen, denn es werden Sourceanalytics und Statistik Adapter entwickelt, die so etwas machen.
Meine Eigenentwicklung für die Wasseruhr schreibt die Zwischenwerte immer mal wieder in ein I2C gekoppeltes EEPROM.
Was mir an ESPEasy, Tasmota, ESPHome generell nicht so gut gefällt: Die liefern die Daten per MQTT. Damit landen die Daten im Verzeichnis des MQTT Adapters und nicht in meinem generellen DATA Verzeichnis. Das geht bei meinen neueren Selbstgebastelten via simpleAPI direkt dorthin. wohin ich es will. -
Ach so ok, ich hab hier zwar den Pulsecounter installiert, aber irgendwie bin ich davon leider nicht so begeistert. Er setzt hin und wieder die gezählten Werte zurück, die Aktualisierungsrate ist leider nicht einstellbar noch ist sie meiner Meinung nach in einem akzeptablen Zyklus. Des Weiteren ist die Durchschnittsverbrauchsrechnung eine totale Katastrophe. Wenn ich wie beim Wasser pro Impuls ein Signal habe, hängt der Durchschnittszähler eine viertel Stunde später immer noch bei irgendwelchen Werten rum. Um das ganze jetzt zu umgehen, bin ich auf der Suche nach einer bessere Lösung. Ich werde mir jetzt dann mal die Geschichte mit dem ESPEasy anschauen und hoffen, dass es besser funktioniert.
-
@ChristianM Da ich Eugens pulsecounter nur theoretisch - und das nur sehr oberflächlich - kenne, weiß ich nicht, ob der ESPEasy besser funktioniet. Ich habe den ESPEasy auch nicht ordentlich an einem Funktionsgenerator etc geprüft. Einfach das S0 Interface vorschriftsgemäß mit zusätzlichem Optokoppler aufgebaut, alles in ein AP Verteilergehäuse gepackt, an Versorgung und S0-Ausgang angeschlossen und HW fertig.
Von meinem Wasserzähler weiß ich, daß es beim ESP8266 zu Impulsverlusten kommen kann, wenn das Teil mit dem Webserver beschäftigt ist. Aber da habe ich deutlich höhere Abtastraten getestet, als so ein S0-Zähler braucht.
Die "Zeitbasis" kann man konfigurieren. Hatte ursprünglich 10 Skunden ud dann auf 60 Sekunden erhöht. In dieser Applikation gehts um den Stromverbrauch der Ölheizung, also Brenner, Pumpen, Regelung etc. Da liegt der Maximalwert so etwa unter 400W. Da sind 60 Sekunden Zeitbasis nicht schlecht. Könnte auch noch länger sein.
Im ESPEasy selbst könnte man auch Umrechnungsformeln eingeben. Da man die Totalisierung aber ohnehin in ioBroker vornehmen muß, habe ich mich damit nicht beschäftigt.
So sieht der entsprechende Teil im Menue aus. Unten kann man das "Interval" einstellen.
Die Übertragung läuft über MQTT Protokolleinstellung "Home Assistant (openHAB) MQTT".
Die Totalisierung in ioBroker habe ich recht stmpf und straight forward umgesetzt:/* S0-conter converter for heating electical energy increments ticks calculates energy calculates power */ const timeBase = 60; //seconds const ticksPerKWhOfCounter = 2000; // 2000 ticks per kWh for Eltaco S0 counter const kWhPerTick = 1/ticksPerKWhOfCounter; // const ticksToPower = 3600/ticksPerKWhOfCounter / timeBase ; const initialEnergyValue = 4658.539; // kWh value of the counter when installing the S0 interface and this script ist started for the first time const ticksName = 'mqtt.0.Heizraum-Energy.Heizraum-Energy-S0.ticks'/*Heizraum-Energy/Heizraum-Energy-S0/ticks*/; const ticksSumName = 'data.0.heating.Heizraum.Electricity.ticksSum'/*ticksSum*/; const energyName = 'data.0.heating.Heizraum.Electricity.Energy'/*Energy*/; const powerName = 'data.0.heating.Heizraum.Electricity.Power'/*Power*/; function calculatePowerEnergy (ticksSumName, energyName, powerName, ticks){ var ticksSum = getState(ticksSumName).val; ticksSum = ticksSum + ticks; var Energy = initialEnergyValue + ticksSum * kWhPerTick; var Power = ticks * ticksToPower; setState(ticksSumName, ticksSum); setState(energyName, Energy); setState(powerName, Power); } // start subscriptions Add an subscription for each sensor on({id: ticksName, change: "any" }, function (obj) { ticks = getState(ticksName).val; calculatePowerEnergy (ticksSumName, energyName, powerName, ticks); });
Diese primitive Umsetzung hat allerdings den Nachteil, daß bei einem ioBroker Update Impulse in der Totalisierung verloren gehen.
Wenn der Absolutwert wichtig ist, kann man da noch die Totalisierung im ESP mit verwenden. Man müßte die dann plausibilisieren, um einen Neustart des ESP zu erkennen. Also generell auf die Totalisierung im ESP selbst setzen und nur wenn man ein Zurücksetzen dieser Summe erkannt hat, mit der Zwischenspeicherung im ioBroker aushelfen. Da man den ESP ohnehin nicht so oft updatet wie ioBroker wäre das das bessere Konzept - zumindest wenn das "grand total" sehr wichtig ist..