Sonoff TH mit Tasmota / ESPEasy als Warmwasserpumpenrelais

Begonnen von Lucky2k12, 16 August 2017, 17:00:48

Vorheriges Thema - Nächstes Thema

Lucky2k12

Ich bin grad dabei, mich in Tasmota einzuarbeiten und habe dazu meinen Sonoff TH geflasht, der die Warmwasserpumpe dann temperaturgradientenabhängig schalten soll.

Das Relais lässt sich per WebIF schalten und der Status wird nach FHEM übertragen, schalten per fhem on/off geht noch nicht. Wo könnte es da noch klemmen?
mein Device:
defmod sonoffww MQTT_DEVICE
attr sonoffww IODev mqtt
attr sonoffww autoSubscribeReadings 1
attr sonoffww devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
attr sonoffww icon hue_filled_br30
attr sonoffww publishSet ON OFF cmnd/sonoffww/POWER/set
attr sonoffww room MQTT
attr sonoffww stateFormat transmission-state
attr sonoffww subscribeReading_Pumpe stat/sonoffww/POWER/set
attr sonoffww subscribeReading_Sensor tele/sonoffww/SENSOR
attr sonoffww subscribeReading_Status stat/sonoffww/STATUS
attr sonoffww webCmd ON:OFF

setstate sonoffww subscribe sent
setstate sonoffww 2017-08-16 15:07:59 Pumpe OFF
setstate sonoffww 2017-08-16 15:10:15 state OFF
setstate sonoffww 2017-08-16 16:55:50 transmission-state subscribe sent


Die Temperatur eines angeschlossenen  DS18B20 Sensors wird auch schon in WebIF angezeigt und als MQTT Telegramm übertragen. Ich hätte aber gerne wesentlich häufiger den Wert, um die Pumpe zeitnah einschalten zu können, wenn Warmwasser bezogen wird.
Wo kann ich das einstellen?

Auch wird die Temperatur im FHEM noch nicht angezeigt. Brauch ich da ein stateformat? Den JSON Filter habe ich angelegt, weiß aber nicht so recht weiter.

defmod JSON expandJSON S|sonoff.*:.*:.{.*} (Power|Current|Voltage|Yesterday|Today|AnalogInput0|RSSI|.*Humidity|.*Temperature)
attr JSON room MQTT

setstate JSON active
setstate JSON 2017-08-16 15:07:29 state active


Dann würde ich gern noch weitere Temperaturen an der Heizung messen, das geht aber nicht (weitere DS18B20 parallel).
kann Tasmota mehr als einen DS18B20 oder nur einen?

Herzlichen Dank für eure Unterstützung  ;D
HP T610, HM, Jeelink, LGW, mapleCUL868+434

SusisStrolch

Ich habe für den gleichen Zweck einen Testaufbau mit ESPEasy gemacht.
Es sind 4 Devices angelegt:

Task1: DS18B20 Vorlauf Wärmepumpe, 15s Delay
Task2: DS18B20 Rücklauf Wärmepumpe, 15s Delay
Task3: Dummy Device "Wasser", Type Quad
     Vorlauf
     Ruecklauf
     Delta
     Pumpe
Task4: Dummy Device "Shift", Type Quad
      reg1
      reg2
      reg3
      reg4

Und hier die Rules:

On System#Boot do
// clear shifter
TaskValueSet 4,1,0
TaskValueSet 4,2,0
TaskValueSet 4,3,0
TaskValueSet 4,4,0
endon

On shifter do
// shift out reg1
TaskValueSet 4,4,[Shift#reg3]
TaskValueSet 4,3,[Shift#reg2]
TaskValueSet 4,2,[Shift#reg1]
endon

On pumpctrl do
if [Wasser#Delta]>0.4 // gradient for on
TaskValueSet 3,4,1 // Pumpe ein
endif

if [Wasser#Delta]<0.4 // gradient for off
TaskValueSet 3,4,0 // Pumpe aus
endif
endon

On Vorlauf#DS18B20_00DA do
TaskValueSet 3,1,%eventvalue%
event shifter
TaskValueSet 4,1,%eventvalue%
if [Shift#reg2]>[Shift#reg1]
TaskValueSet 3,3,0
else
TaskValueSet 3,3,[Shift#reg1]-[Shift#reg2]
endif
event pumpctrl
endon

On Ruecklauf#DS18B20_009F do
TaskValueSet 3, 2, %eventvalue%
endon


Im Anhang ein Screenshot vom Schaltverhalten.
Synology DS1515+, 16GB RAM, 4x 6TB WD-Red
- Docker (FHEM), MariaDB, MariaDB10, Surveillance Station
Gateways: LCG miniCUL433, LCG miniCUL868, AVR-X4000, VU-Solo SE, Kodi
ESP8266: ESPEasy (S0-Counter, Temp/Hum), Sonoff TH, Sonoff 4ch

Lucky2k12

Super, Danke @SusisStrolch !
Ich hatte bisher auch ESPEasy im Einsatz, hab aber über FHEM geschaltet und das war nicht so zuverlässig.
Da dachte ich mir, ich probiers mal mit Tasmota / MQTT.

Ich werde wohl deine Lösung mit den Rules für mich adaptieren.

Trotzdem interessiert mich, wo jetzt noch der Haken beim MQTT_DEVICE ist. Ich kriege keine Readings im FHEM.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

SamNitro

zum schalten versuch das mal:

attr sonoffww publishSet ON OFF cmnd/sonoffww/power



und für die Daten müsste man wissen ob die im gerät schon erzeugt werden und/oder ob die im MQTT ankommen...
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

Lucky2k12

Zitat von: SamNitro am 16 August 2017, 20:55:48
zum schalten versuch das mal:

attr sonoffww publishSet ON OFF cmnd/sonoffww/power



und für die Daten müsste man wissen ob die im gerät schon erzeugt werden und/oder ob die im MQTT ankommen...
ok, damit schaltet er ein und direkt wieder aus:

mosquitto_sub -d -v -t \#

stat/sonoffww/RESULT {"POWER":"ON"}
Client mosqsub|17233-raspberry received PUBLISH (d0, q0, r0, m0, 'stat/sonoffww/POWER', ... (2 bytes))
stat/sonoffww/POWER ON
Client mosqsub|17233-raspberry received PUBLISH (d0, q0, r0, m0, 'stat/sonoffww/RESULT', ... (15 bytes))
stat/sonoffww/RESULT {"POWER":"OFF"}
Client mosqsub|17233-raspberry received PUBLISH (d0, q0, r0, m0, 'stat/sonoffww/POWER', ... (3 bytes))
stat/sonoffww/POWER OFF


Edit: Konsole vom Modul:
19:59:43 MQTT: stat/sonoffww/RESULT = {"POWER":"ON"}
19:59:43 MQTT: stat/sonoffww/POWER = ON
19:59:44 MQTT: stat/sonoffww/RESULT = {"POWER":"OFF"}
19:59:44 MQTT: stat/sonoffww/POWER = OFF
HP T610, HM, Jeelink, LGW, mapleCUL868+434

SamNitro

Geht er auch direkt wieder aus wenn du ihn am Gerät schaltest?

Welches Gerät hast du eingerichtet in den Optionen? Sonoff th?




Gesendet von iPhone mit Tapatalk
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

Lucky2k

Ja (mit webIF, der Schalter ist kaputt) und ja, th

Gesendet von meinem SM-P600 mit Tapatalk


SamNitro

Gib mal bitte das Ergebnis von
-PulseTime
-SwitchMode
Aus der Console
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

Lucky2k12


10:01:49 CMND: pulsetime
10:01:49 MQTT: stat/sonoffww/RESULT = {"PulseTime1":10}
10:02:34 CMND: switchmode
10:02:34 MQTT: stat/sonoffww/RESULT = {"Command":"Unknown"}

in der user_config.h hab ich
#define SWITCH_MODE            TOGGLE
stehen.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

Reinhart

#9
mit PulseTime 10 wird nach 10 1/10 Sekunden automatisch wieder ausgeschaltet.

Entweder Pulsetime 0 oder einen vernünftigen Wert einstellen wenn Automatikbetrieb gewünscht ist.

PulseTime<x> Show current PulseTime of relay<x> in 0.1 seconds
PulseTime<x> 0 / off (Default) Disable use of PulseTime for relay<x>
PulseTime<x> 1..111 Set PulseTime for relay<x> with 0.1 seconds increment
PulseTime<x> 112..64900 Set PulseTime for relay<x> with 1 seconds increment starting with 12 seconds (113 = 13 seconds etc.)


LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Lucky2k12

Super erklärt, Danke das war's.
Ich hab jetzt auf der console "pulsetime 160" eingegeben und die Pumpe schaltet nach einer Minute aus.

10:30:34 MQTT: stat/sonoffww/RESULT = {"POWER":"ON"}
10:30:34 MQTT: stat/sonoffww/POWER = ON
10:31:34 MQTT: stat/sonoffww/RESULT = {"POWER":"OFF"}
10:31:34 MQTT: stat/sonoffww/POWER = OFF


Das Temperaturreading wurde automatisch im FHEM Device angelegt, nachdem ich diverse attribute und readings gelöscht hatte.
mehrere Temperatursensoren gehen jetzt auch, nach Eintrag von
#define USE_DS18x20

letzter Stand des Devices:

Internals:
   IODev      mqtt
   NAME       sonoffww
   NR         270
   STATE      Vorlauf: 48.1 C; Rücklauf: 43.3 C; PumpeWW: OFF ; incoming publish received ;
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Helper:
     DBLOG:
       DS18x20_DS1_Temperature:
         DBLogging:
           TIME       1503137184.14974
           VALUE      48.1
       DS18x20_DS2_Temperature:
         DBLogging:
           TIME       1503137184.14974
           VALUE      43.3
       Pumpe:
         DBLogging:
           TIME       1503136804.85091
           VALUE      OFF
   READINGS:
     2017-08-19 12:06:24   DS18x20_DS1_Temperature 48.1
     2017-08-19 12:06:24   DS18x20_DS2_Temperature 43.3
     2017-08-19 12:00:04   Pumpe           OFF
     2017-08-19 12:06:24   Sensor          {"Time":"2017-08-19T11:06:24", "DS18x20":{"DS1":{"Type":"DS18B20", "Address":"28FFF6169015039A", "Temperature":48.1}, "DS2":{"Type":"DS18B20", "Address":"28FFBB139015049D", "Temperature":43.3}}, "TempUnit":"C"}
     2017-08-19 12:06:24   Status          {"Time":"2017-08-19T11:06:23", "Uptime":1, "Vcc":3.184, "POWER":"OFF", "Wifi":{"AP":1, "SSID":"MySSID", "RSSI":16, "APMac":"xx:xx:xx:xx:xx:xx"}}
     2017-08-19 12:00:03   state           OFF
     2017-08-19 12:06:24   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      cmnd/sonoffww/POWER
       values:
         ON
         OFF
   sets:
     OFF
     ON
   subscribe:
     stat/sonoffww/POWER/set
     tele/sonoffww/SENSOR
     stat/sonoffww/STATUS
     stat/sonoffww/STATE
     stat/sonoffww/POWER
     tele/sonoffww/STATE
   subscribeExpr:
     ^stat\/sonoffww\/POWER\/set$
     ^tele\/sonoffww\/SENSOR$
     ^stat\/sonoffww\/STATUS$
     ^stat\/sonoffww\/STATE$
     ^stat\/sonoffww\/POWER$
     ^tele\/sonoffww\/STATE$
   subscribeReadings:
     stat/sonoffww/POWER Pumpe
     stat/sonoffww/POWER/set Pumpe
     stat/sonoffww/STATE Status
     stat/sonoffww/STATUS Status
     tele/sonoffww/SENSOR Sensor
     tele/sonoffww/STATE Status
Attributes:
   DbLogInclude DS18x20_DS1_Temperature,DS18x20_DS2_Temperature,Pumpe
   IODev      mqtt
   devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
   icon       hue_filled_br30
   publishSet ON OFF cmnd/sonoffww/POWER
   room       Heizung,MQTT
   stateFormat Vorlauf: DS18x20_DS1_Temperature C; Rücklauf: DS18x20_DS2_Temperature C; PumpeWW: Pumpe ; transmission-state ;
   subscribeReading_Pumpe stat/sonoffww/POWER
   subscribeReading_Sensor tele/sonoffww/SENSOR
   subscribeReading_Status tele/sonoffww/STATE
   webCmd     ON:OFF

Was noch nicht geht ist das devstateicon. Da steht nur ON und OFF
und die Temperaturtelegramme kommen nur alle 5 Minuten.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

Reinhart

Ja, Pulsetime ist etwas kompliziert weil es eine Doppelfunktion der Zeiteinheit hat (bis 111 und ab 112) .

wenn beim devstateicon nur Text steht, dann fehlen dir im Verzeichnis /opt/fhem/www/images/default die Icons. Checke das einmal, es sollten dort rc_RED, rc_GREEN und rc_OK liegen.
Entweder du wählst andere Icons oder nimmst die vom Anhang und kopierst sie an die richtige Stelle.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Lucky2k12

Zitat von: SusisStrolch am 16 August 2017, 18:30:18
Ich habe für den gleichen Zweck einen Testaufbau mit ESPEasy gemacht.
...
Im Anhang ein Screenshot vom Schaltverhalten.
Ich habe das nachgebaut, aber leider startet mein ESP immer wieder neu.
Das sieht man z.B. an der uptime und daran, dass Delta dann nach dem Neustart für einen Zyklus gleich der aktuellen Temperatur ist.
Die Pumpe schaltet dann auch ein.
RSSI ist so -60-65. Kann das am Wifi liegen oder ist der ESP mit den Messungen und rechnen schon überfordert?
Kann ich mir fast nicht vorstellen...

Hinweise zur Fehlersuche sind willkommen, Danke!
HP T610, HM, Jeelink, LGW, mapleCUL868+434

Lucky2k12

Die hohe Auslastung hing offensichtlich mit dem "enable Serial Port" @115k unter Advanced Settings zusammen.  :P
Nachdem ich das Häkchen rausgemacht habe, gibt es erstmal seit ein paar Stunden keine Reboots mehr.
Auslastung ist auf Werte 50-80% gesunken, v2.0.0-dev11.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

Reinhart

ich habe mir deinen Eröffnungsthread jetzt genauer angesehen, so klappt das mit den neuen Versionen von Tasmota nicht mehr, hier wurde von Theo einiges geändert. Siehe Beispiel im Wiki des PIR.
Ich werde das die nächsten Tage bei allen Beispielen überarbeiten und bei "MQTT und Tasmota" genau darauf hinweisen.


attr sonoffww publishSet ON OFF cmnd/sonoffww/POWER/set
alte Versionen vor Tasmota 5


attr sonoffww publishSet ON OFF cmnd/sonoffww/POWER
mit Tasmota 5 entfällt /set


LG


[/code]
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa