Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Tasmota Script (Beispiel für Gartenbewässerung)

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    12
    1
    337

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.3k

Tasmota Script (Beispiel für Gartenbewässerung)

Geplant Angeheftet Gesperrt Verschoben Hardware
tasmotascript
3 Beiträge 2 Kommentatoren 6.6k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    anwa
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich habe mich gerade ein wenig mit der Scripterstellung (keine Rules!) in Tasmota beschäftigt.
    Ich möchte euch hier ein kleines nützliches Script vorstellen. Es ist im Zuge meiner Gartenbewässerung entstanden (noch in Arbeit).

    HW Setup:

    • Wemos D1 mini
    • Tastmota 8.3.1.5 (selbstkompiliert: #define USE_SCRIPT)
    • Zwei Relais (Ventil + Pumpe)
    • Diverse Sensoren (Kap. Bodenfeuchte, 2 DS18B20 Bodentemperatur, BME280, BH1750 Lux)

    Problem:
    Der Wemos soll Ventil und Pumpe steuern. Ich will mich aber nicht darauf verlassen, das ioBroker das auch wieder ausschaltet!

    Lösung (meine):
    Ich habe ein Script erstellt in Tasmota mit folgenden Funktionen:

    • Maximale Zeit die das Ventil offen sein darf
    • Wenn das Ventil zu geht, soll die Pumpe mit Nachlauf ausschalten
    • Wenn WiFi oder MQTT ausfällt, werden Ventil und Pumpe ausgeschaltet
    • Noch eine kleine Berechnung der Abs. Luftfeuchte (aus den Beispielen)
    >D
    t:t_MAX_ON=-1
    t:t_PUMP_OFF=-1
    t:wflt=-1
    t:mflt=-1
    tmp=0
    hum=0
    temp=0
    valve=0
    wifi=0
    mqtt=0
    MAX_ON=360  ; TODO: Should be changed by MQTT
    PUMP_OFF=5  ; TODO: Should be changed by MQTT
    
    >B
    tmp=pn[21] ; get gpio pin for valve relais
    =>print Ventil is on pin %tmp%
    spin(tmp 1) ; Switch off relais over raw gpio
    
    tmp=pn[22] ; get gpio pin for pump relais
    =>print Pumpe is on pin %tmp%
    spin(tmp 1) ; Switch off relais over raw gpio
    
    >T
    hum=BME280#Humidity
    temp=BME280#Temperature
    
    >S
    ; publish abs hum every teleperiod time
    if mqtts>0 and upsecs%tper==0
    then
    ; calc abs humidity
    tmp=pow(2.718281828 (17.67*temp)/(temp+243.5))
    tmp=(6.112*tmp*hum*18.01534)/((273.15+temp)*8.31447215)
    ; publish median filtered value
    ;=>Publish tele/%topic%/SENSOR {"BME280":{"AbsHumidity":%med(0 tmp)%}}
    endif
    
    ; stop ventil after MAX_ON time expired
    if t_MAX_ON==0
    then
    t_MAX_ON=-1
    =>print Close valve (MAX_ON time expired)
    =>power1 0
    endif
    
    ; stop pump after valve is closed
    if t_PUMP_OFF==0
    then
    t_PUMP_OFF=-1
    =>print Stop pump after valve is closed
    =>power2 0
    endif
    
    if boot==0
    then
    valve=pwr[1]
    if chg[valve]>0
    then
    if valve>0
    then ; Valve open
    t_MAX_ON=MAX_ON ; start valve MAX_ON timmer
    t_PUMP_OFF=-1 ; delete pump off timer
    endif
    if valve==0
    then ; Valve closed
    t_PUMP_OFF=PUMP_OFF ; Start pump off delay
    endif
    endif
    endif
    
    ; Check WiFi connection
    wifi=wifis
    if chg[wifi]>0
    then
    if wifi==0
    then
    wflt=10
    else
    wflt=-1
    endif 
    endif
    
    ; Check MQTT connection
    mqtt=mqtts
    if chg[mqtt]>0
    then
    if mqtt==0
    then
    mflt=10
    else
    mflt=-1
    endif
    endif 
    
    ; switch off relais on comm faults
    if wflt==0 ; WiFi is disconnected
    or mflt==0 ; MQTT is disconnected
    then
    wflt=-1
    mflt=-1
    =>print WiFi or MQTT disconnected
    =>print Switch off relais for safty
    =>power1 0
    =>power2 0 ; Not nessessary because of Pump OFF in 5 sec.
    endif
    

    Leider ist das Script Modul recht pingelig, was die Formatierung angeht...
    Ich will noch die Zeiten über MQTT ändern können, aber ansonsten funktioniert das bei mir gut.

    Ich freue mich auf Feedback :)

    Gruß
    Andreas

    S 1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      anwa
      schrieb am zuletzt editiert von
      #2

      Ok, das war ein Denkanstoß...
      Inzwischen habe ich den PulseTime1..x Besfehl entdeckt. Diesen kann man gut über MQTT steuern.
      Da ich den Sonoff Adapter benutze, mußte ich noch die DP PulseTime1 und PulseTime2 anlegen. Dann konnte ich die per MQTT setzen.
      Das Script ist aber immer noch hilfreich, da ich hier das absolute Limit einer (EIN)Schaltzeit ohne Einfluss auf die PulseTime setzen kann. Außerdem die Sicherheitsabschaltung, falls das WLAN verloren geht.

      Gruß
      Andreas

      1 Antwort Letzte Antwort
      0
      • A anwa

        Hallo,
        ich habe mich gerade ein wenig mit der Scripterstellung (keine Rules!) in Tasmota beschäftigt.
        Ich möchte euch hier ein kleines nützliches Script vorstellen. Es ist im Zuge meiner Gartenbewässerung entstanden (noch in Arbeit).

        HW Setup:

        • Wemos D1 mini
        • Tastmota 8.3.1.5 (selbstkompiliert: #define USE_SCRIPT)
        • Zwei Relais (Ventil + Pumpe)
        • Diverse Sensoren (Kap. Bodenfeuchte, 2 DS18B20 Bodentemperatur, BME280, BH1750 Lux)

        Problem:
        Der Wemos soll Ventil und Pumpe steuern. Ich will mich aber nicht darauf verlassen, das ioBroker das auch wieder ausschaltet!

        Lösung (meine):
        Ich habe ein Script erstellt in Tasmota mit folgenden Funktionen:

        • Maximale Zeit die das Ventil offen sein darf
        • Wenn das Ventil zu geht, soll die Pumpe mit Nachlauf ausschalten
        • Wenn WiFi oder MQTT ausfällt, werden Ventil und Pumpe ausgeschaltet
        • Noch eine kleine Berechnung der Abs. Luftfeuchte (aus den Beispielen)
        >D
        t:t_MAX_ON=-1
        t:t_PUMP_OFF=-1
        t:wflt=-1
        t:mflt=-1
        tmp=0
        hum=0
        temp=0
        valve=0
        wifi=0
        mqtt=0
        MAX_ON=360  ; TODO: Should be changed by MQTT
        PUMP_OFF=5  ; TODO: Should be changed by MQTT
        
        >B
        tmp=pn[21] ; get gpio pin for valve relais
        =>print Ventil is on pin %tmp%
        spin(tmp 1) ; Switch off relais over raw gpio
        
        tmp=pn[22] ; get gpio pin for pump relais
        =>print Pumpe is on pin %tmp%
        spin(tmp 1) ; Switch off relais over raw gpio
        
        >T
        hum=BME280#Humidity
        temp=BME280#Temperature
        
        >S
        ; publish abs hum every teleperiod time
        if mqtts>0 and upsecs%tper==0
        then
        ; calc abs humidity
        tmp=pow(2.718281828 (17.67*temp)/(temp+243.5))
        tmp=(6.112*tmp*hum*18.01534)/((273.15+temp)*8.31447215)
        ; publish median filtered value
        ;=>Publish tele/%topic%/SENSOR {"BME280":{"AbsHumidity":%med(0 tmp)%}}
        endif
        
        ; stop ventil after MAX_ON time expired
        if t_MAX_ON==0
        then
        t_MAX_ON=-1
        =>print Close valve (MAX_ON time expired)
        =>power1 0
        endif
        
        ; stop pump after valve is closed
        if t_PUMP_OFF==0
        then
        t_PUMP_OFF=-1
        =>print Stop pump after valve is closed
        =>power2 0
        endif
        
        if boot==0
        then
        valve=pwr[1]
        if chg[valve]>0
        then
        if valve>0
        then ; Valve open
        t_MAX_ON=MAX_ON ; start valve MAX_ON timmer
        t_PUMP_OFF=-1 ; delete pump off timer
        endif
        if valve==0
        then ; Valve closed
        t_PUMP_OFF=PUMP_OFF ; Start pump off delay
        endif
        endif
        endif
        
        ; Check WiFi connection
        wifi=wifis
        if chg[wifi]>0
        then
        if wifi==0
        then
        wflt=10
        else
        wflt=-1
        endif 
        endif
        
        ; Check MQTT connection
        mqtt=mqtts
        if chg[mqtt]>0
        then
        if mqtt==0
        then
        mflt=10
        else
        mflt=-1
        endif
        endif 
        
        ; switch off relais on comm faults
        if wflt==0 ; WiFi is disconnected
        or mflt==0 ; MQTT is disconnected
        then
        wflt=-1
        mflt=-1
        =>print WiFi or MQTT disconnected
        =>print Switch off relais for safty
        =>power1 0
        =>power2 0 ; Not nessessary because of Pump OFF in 5 sec.
        endif
        

        Leider ist das Script Modul recht pingelig, was die Formatierung angeht...
        Ich will noch die Zeiten über MQTT ändern können, aber ansonsten funktioniert das bei mir gut.

        Ich freue mich auf Feedback :)

        Gruß
        Andreas

        S Offline
        S Offline
        saeft_2003
        Most Active
        schrieb am zuletzt editiert von
        #3

        @anwa

        Deine Lösung ist echt nicht schlecht, aber für mich wahrscheinlich zu kompliziert. Ich bin das Problem bei meiner Bewässerung etwas anders angegangen. Und zwar hatte ich natürlich auch bedenken das bei der Bewässerung ein Ausschaltbefehl nicht ankommen könnte. Meine Pumpe wird über eine Eltakorelais gesteuert, egal ob iobroker läuft oder nicht nach einer Stunde ist Feierabend.

        Noch dazu überprüfe ich mit diesem Skript ob ein Befehl bestätigt wurde oder nicht. Falls nicht bekomme ich sofort ein Telegramm. Das funktioniert wirklich sehr gut. Ich nutze zwar meine Bewässerung erst seit wenigen Monaten, aber bis jetzt ist noch nie ein Befehl nicht angekommen.

        https://forum.iobroker.net/topic/32275/ack-state-abfragen-lesen/13

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        377

        Online

        32.5k

        Benutzer

        81.6k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe