Autor Thema: Öl-Pegelsensor mit Wemos und ADS1115 Füllstand in Tasmota Anzeigen lassen  (Gelesen 881 mal)

Offline Nob88

  • New Member
  • *
  • Beiträge: 5
Hallo,
Ich möchte in meinen Öltank 2000L ca. 2m Hoch einen Pegelsensor einbauen und über Tasmota den Füllstand anzeigen lassen. Mein jetziges Wissen reicht mir einfach nicht aus es hin zu bekommen, würde mich sehr über eure Hilfe freuen.

Mein Setup:
Pegelsensor: DC24V 4-20 mA für den industriellen Einsatz(0-2m range)https://www.amazon.de/gp/product/B08T15839R/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
Spannungswandler: Modul 0-5V bis 4-20mA https://www.amazon.de/gp/product/B082195VRF/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
MT3608 DC-DC Netzteil Adapter Step up Modul  https://www.az-delivery.de/products/mt3608-dc-dc-step-up-modul-1
WEMOS: https://www.az-delivery.de/products/d1-mini
ADS1115 ADC https://www.az-delivery.de/products/analog-digitalwandler-ads1115-mit-i2c-interface


TAsmota Zeigt folgende Werte an:

Sensor im Büro 1OG auf dem Tisch   Sensor draußen im leeren Tank      Sensor draußen in einem vollen 1000L IBC Tank      
Analog0   436                                                 Analog0   339                                        Analog0   353
ADS1115 Analog0   8147                         ADS1115 Analog0   2016                     ADS1115 Analog0   3874
ADS1115 Analog1   4948                         ADS1115 Analog1   4375                     ADS1115 Analog1   5065
ADS1115 Analog2   4877                         ADS1115 Analog2   4894                     ADS1115 Analog2   5083
ADS1115 Analog3   4659                         ADS1115 Analog3   5002                     ADS1115 Analog3   5563

Sind diese Werte realistisch?
Kann es sein das ich einen anderen Spannungswandler brauche?

Weshalb Zeigt mir der ADS1115 andere Werte an wie der Wemos kann man diese in Tasmota kalibrieren?
Oder weshalb Zeigt der ADS..    A1 A2 A3 obwohl das Signal nicht angeschlossen ist?

Wie Kann ich diese Werte in Tasmota umrechnen lassen für den Füllstand?

Ich Bedanke mich im vorab und freu mich riesig auf eure Hilfe.

« Letzte Änderung: 19 November 2022, 21:54:47 von Nob88 »

Offline Nob88

  • New Member
  • *
  • Beiträge: 5
Ich hab den falschen Spannungswandler bekommen deshalb waren die Werte falsch, heute kam der richtige und ich konnte den Sensor wunderbar kalibrieren.

Ich bräuchte trotzdem noch eure Hilfe.

Könnte mir jemand ein passendes Skript für Tasmota schreiben das er mir den Analog0 Wert in Liter Anzeigt?

Er Zeigt mir den Wert Analog0:  237 an,  im Tank sind jetzt genau 968 Liter und in den Tank passen 2000L hinein.

Würde mich sehr freuen über eure Hilfe.

Ich hab hier ein Skript von Billy aber mein wissen reicht nicht aus diesen umzuschreiben und ich bräuchte es erstmal ohne Display: 

[>D
r=100
l=207
h=0
a=0
v=0
m=0
n=0
hr=0
DT="DisplayText"

>T
m=ANALOG#A0
if m<601
then
h=ANALOG#A0/3
endif


>S
; clr display on boot
if boot>0
then

a=2*acos((r-h)/r)
v=l/1000*((r*r)/2)*(a-sin(a))
->%DT% [s1p21c1l01]Volumen
->%DT% [s1p21c1l02]%0v%
->%DT% [s1p21c1l03]Liter
=>publish stat/%topic%/Volumen %0v%
endif
;if upsecs%600==0

;update every teleperiod
if upsecs%tper==0
then

a=2*acos((r-h)/r)
v=l/1000*((r*r)/2)*(a-sin(a))

print Wstd :%h%
print Winkel Alpha:%a%
print Volumen :%v% Liter
->%DT% [s1p21c1l01]Volumen
->%DT% [s1p21c1l02]%0v%
->%DT% [s1p21c1l03]Liter

=>publish stat/%topic%/Volumen %0v%
=>publish stat/%topic%/Wstd %0h%
;Nachspeisung
if v<5000
then
n=1
=>publish fhem/status/alarm/Zisterne_Nachspeisung on
endif
if v>6000
then
n=0
=>publish fhem/status/alarm/Zisterne_Nachspeisung off
endif
print Nachspeisung :%n%
endif

hr=hours
if chg[hr]>0
and n>0
then
print Eine Stunde ist um!
=>power2 1
;pulsetime2 160 schaltet Pumpe nach 60s ab!
endif

>W
Füllmenge in Liter {m} %0v%
.
--- Garten ------- Pumpe-NS --- Display/code]

Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1185
Könnte mir jemand ein passendes Skript für Tasmota schreiben das er mir den Analog0 Wert in Liter Anzeigt?
Er Zeigt mir den Wert Analog0:  237 an,  im Tank sind jetzt genau 968 Liter und in den Tank passen 2000L hinein.
Ich hab hier ein Skript von Billy aber mein wissen reicht nicht aus diesen umzuschreiben und ich bräuchte es erstmal ohne Display: 

Guten Morgen.
Voraussetzung für die Funktion eines Scriptings in Tasmota für diesen Anwendungsfall:
1. GEMU Scripting in Tasmota mus aktiviert sein --> ist das bei dir der Fall?
2. Welche Form hat dein 2000 Liter Tank? Das Volumen muss ja in Beziehung zur Sensor Eintauchtiefe abgebildet werden können.
3. im Gemu Scripting muss u.a. die Funktion #define USE_ANGLE_FUNC  // Winkel Funktionen für Behälter/taank aktiviert sein.

Wo stehst du? Hast du in Tasmota das Scripting schon aktiviert? Welche Form hat dein Tank?

Gruss Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Offline Nob88

  • New Member
  • *
  • Beiträge: 5
Guten Morgen,

Scripting habe ich in Tasmota aktiviert hab auch dein Skript hinein kopiert und er zeigt mir schon folgendes an:

Analog0   235
Füllmenge in Liter   0

--- Garten ------- Pumpe-NS --- Display

Bei der Literzahl zeigt er mir nur eine 0 an.

Zitat
3. im Gemu Scripting muss u.a. die Funktion #define USE_ANGLE_FUNC  // Winkel Funktionen für Behälter/taank aktiviert sein.

Wo und wie kann ich diesen punkt aktivieren? Muss ich diesen wie andere Sensoren vor dem kompiliere in der config aktivieren?

Ein Foto von meinem Tank habe ich angehängt, das Problem werden die Wölbungen des Tankes sein.

Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1185
Guten Morgen,

Scripting habe ich in Tasmota aktiviert hab auch dein Skript hinein kopiert und er zeigt mir schon folgendes an:

Muss ich diesen wie andere Sensoren vor dem kompiliere in der config aktivieren?

Ja, ist alles hier beschrieben!
https://tasmota.github.io/docs/Scripting-Language/

1. In meinem Fall der Zisterne war das ein liegender Zylinder der auch mit meinem Script berechnet wurde.
Insofern kannst du gar kein vernünftiges Ergebnis erwarten.
2. War in meinem Fall die Flüssigkeit Wasser mit spezifische Gewicht  von 1!
3. Das spezifische Gewicht von Heizöl beträgt 0,85. Das heißt, es ist exakt 0,85 Mal so schwer wie Wasser.
 In diesem Fall beträgt das Gewicht von 1 Liter Heizöl exakt 850 Gramm oder 0,85 kg.
 Das müsstest du also bei deinem Script anpassen.

Die frage wäre auch noch ob du das bei der Auswahl des Pegelsensors berücksichtigt hast?

Ein Foto von meinem Tank habe ich angehängt, das Problem werden die Wölbungen des Tankes sein.

Das dürfte dein Hauptproblem sein! Egal welcher Pegelmesser du musst eine Formel haben die dein Volumen berechnen kann.
Oder ganz einfach wie willst du das Volumen in Abhängigkeit von dem Pegelstand bei deiner Behälterform berechnen?
Eine Lösung könnte Volumenermittlung mit Litterung sein. Das Ergebnis müsstest du dann in einer Tabelle speichern und dann im Scripting oder direkt in FHEM abrufen.

Viel Erfolg

Billy
« Letzte Änderung: 28 November 2022, 08:47:10 von Billy »
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Offline Nob88

  • New Member
  • *
  • Beiträge: 5
Hallo Billy,

Vielen lieben Dank für deine Infos, ich bin jetzt ein ganzes Stück weiter gekommen.

Hab die Tasmota firmware neu kompiliert und folgende Einträge in die USER_CONFIG_OVERRIDE.H hinzugefügt:

#ifndef USE_SCRIPT
#define USE_SCRIPT
#endif
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif

#define USE_ANGLE_FUNC
#define USE_BUTTON_EVENT
#define USE_SCRIPT_WEB_DISPLAY
#define SCRIPT_POWER_SECTION
#define USE_SCRIPT_STATUS

Hab noch in einem anderen Forum dein Skript gefunden und diesen angepasst und bin erstmal damit zufrieden.  Ich brauch es jetzt nicht auf ein Liter genau:

>D

r=100 ;Radius liegende Zisterne in cm

l=200 ;Länge liegende Zisterne in cm

h=0 ;Wasserstand in cm

a=0 ;Berechnungswinkel

v=0 ;Volumen

m=0 ; Analogwert des Levelsensors

DT="DisplayText"



>T

m=ANALOG#A0

if m<601

then

h=ANALOG#A0/3

endif



>S



;update every teleperiod

if upsecs%tper==5

then



a=2*acos((r-h)/r)

v=l/1000*((r*r)/2)*(a-sin(a))



print Wstd :%h%

print Winkel Alpha:%a%

print Volumen :%v% Liter

=>%DT% [s1p21c1l01]Volumen

=>%DT% [s1p21c1l02]%0v%

=>%DT% [s1p21c1l03]Liter



=>publish stat/%topic%/RESULT %0v%



>W

Füllmenge {m} %0v% Liter

------------------------------------

Vielen lieben Dank!


Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1185
Das mit meiner Unterstützung ist gerne geschehen, auch mir wurde hier im Forum schon oft geholfen.

Freut mich dass es geklappt hat. Hut ab, dass du dich in so kurzer Zeit in die Anwendung des Tasmota Scripting eingearbeitet hast.
Du könntest ja hier noch die 2 Links einfügen die dir bezüglich Script weitergeholfen haben dann tun sich weitere Interessenten leichter.

PS: Mein Level Sensor für Zisterne und Öl - Tank läuft seit ziemlich genau 4 Jahren völlig ohne Probleme!
           https://forum.fhem.de/index.php/topic,93308.msg859510.html#msg859510   

LG Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Offline Nob88

  • New Member
  • *
  • Beiträge: 5
Hallo,

Auf die Idee mit dem Pegelsensor bin ich durch dieses Forum aufmerksam geworden hier steht das meiste Grundwissen: https://forum.fhem.de/index.php/topic,93308.165.html?PHPSESSID=g5iajh0urnjec1hop8env2j6va

zur Berechnung eines Zylinders: https://github.com/gemu2015/Sonoff-Tasmota/issues/14

Skripting für Tasmota gibt es einiges und sehr Interessantes bei Creation: https://forum.creationx.de/forum/index.php?thread/1791-script-editor-f%C3%BCr-tasmota/&pageNo=1

https://forum.creationx.de/forum/index.php?thread/1791-script-editor-f%C3%BCr-tasmota/&postID=28370&highlight=a%253D2%252Aacos%2528%2528r-h%2529%252Fr%2529%2B%2Bv%253Dl%252F1000%252A%2528%2528r%252Ar%2529%252F2%2529%252A%2528a-sin%2528a%2529%2529#post28370

Wer über  Tasmota lernen möchte unter anderem auch Firmware selber Kompilieren, der kann sich EddyDś YoutTube Kanal anschauen der macht viel mit Tasmota und Sensoren.
https://youtu.be/MPoymV90RHo

Es gibt noch andere sehr Interessante Methoden um den Wasserfüllstände von Teichen Zisternen, IBC Tanks u.s.w. zu messen z.b. mit einer Pegelstange: https://www.ingos-home-assistant.de/projekte/f%C3%BCllstandsmessung/


« Letzte Änderung: 30 November 2022, 22:08:25 von Nob88 »