[Gelöst] Sonoff 4Ch Pro R2 mit Tasmota per MQTT2: PulseTime oder on-for-timer

Begonnen von JHo, 24 Juli 2019, 22:34:03

Vorheriges Thema - Nächstes Thema

JHo

Hallo,

ich habe einen Sonoff 4Ch Pro (R2) mit aktuellem Tasmota geflasht, per Autocreate über MQTT2 eingebunden und mit dem 4Ch-Pro-Template konfiguriert. Ich kann problemlos über FHEM schalten und bekomme lokale oder Schaltvorgänge über das WebIF von Tasmota in FHEM mit. Funktioniert also an sich.

Auch kann ich über die Tasmota-Konsole die PulseTime setzen - nur über FHEM bin ich zu doof dazu. Wie muss ich den "set <DEVICE> POWER<x> on"-Befehl erweitern, um die PulseTime zu übergeben?
Im Wiki zu MQTT2 steht, dass es "on-for-timer" gibt, da setExtensions automatisch aktiviert ist. Aber auch das bekomme ich nicht hin, es gibt nur die Fehlermeldung aus, dass ich doch "set <Device> POWER1 POWER2 etc. pp on off toggle" ausführen soll und es "on-for-timer" eben nicht gibt. Kann mir jemand helfen?

Ziel soll sein, den vier Kanälen variabel und von FHEM bedarfsgesteuert Abschalt-Timer mitzugeben, um die Bewässerungsventile durch das Sonoff selber, autark, wieder abzudrehen.

Viele Grüße
Jan
1: FHEM auf Ubuntu, MAX!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, diverse LaCrosse-Sensoren, per remote angebundene DS18B20-Sensoren
2: FHEM auf Raspi 3, Max!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, ht_pitiny-Adapter zu Junkers FW120

rudolfkoenig

on-for-timer (und etliche andere wie interval, blink) wird von SetExtensions genau dann angeboten, wenn das Geraet von sich aus ein on und ein off Befehl anbietet.
Das ist bei einer 4-Kanal-Definition problematisch, einer der Gruende warum ich eine separate FHEM-Definition fuer jeden Kanal bevorzuge.

DasQ

Nagut dann weis ich jetzt warum mein Blink immer genau 10 mal statt nur 1 mal blinkt

defmod HausTuerSignalKueche DOIF ([11:00-15:30] and [ESP_5Vrelais:Glocke] eq "on" and [Kueche_SonOff_4CH_1:POWER2] eq "on" ) ((set Kueche_SonOff_4CH_1 POWER2 blink 3 1, set Kueche_SonOff_4CH_1 POWER2 off), ({Log 3, "Klingeln an der Haustuer zwischen 11-14:30 Uhr"}))\
DOELSEIF   ([11:00-15:30] and [ESP_5Vrelais:Glocke] eq "on" and [Kueche_SonOff_4CH_1:POWER2] eq "on" )  (set Kueche_SonOff_4CH_1 POWER2 blink 1 1, set Kueche_SonOff_4CH_1 POWER2 on)\
DOELSEIF   ([11:00-15:30] and [ESP_5Vrelais:Glocke] eq "on" and [Kueche_SonOff_4CH_1:POWER2] eq "off" ) (set Kueche_SonOff_4CH_1 POWER2 blink 1 1, set Kueche_SonOff_4CH_1 POWER2 off)
attr HausTuerSignalKueche group ESP
attr HausTuerSignalKueche repeatsame 1:1:1
attr HausTuerSignalKueche room Hausgang,Kueche
attr HausTuerSignalKueche verbose 3
attr HausTuerSignalKueche wait 0,3:0,3:0,3
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

Beta-User

Mal schauen, wie ich das mit den SetExtensions eventuell bei Gelegenheit nochmal irgendwie genauer verwurstle in der Doku/den templates.

Trotzdem will der TE hier ja eigentlich was anderes, nämlich einen timer, der auf dem Gerät (ESP8266) läuft.

Hat jemand eine Idee bzw. kann mal in der (tasmota-) Doku nachsehen, was man da per MQTT versenden muß, um es auf diesem Weg zu realisieren?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JHo

Ich dachte, bei den unterstützen Geräten würde on-for-timer eben genau auf dem Gerät angewendet? Habe ich das falsch verstanden?

Richtig, mir geht es darum, einen Timer zum Abschalten von FHEM aus im Gerät zu setzen. Damit meine Ventile nicht den Garten fluten, wenn FHEM ausfällt.
Tasmota bietet als Command dafür PulseTime. Das funktioniert in der Konsole und kann nach Tasmota-Referenz auch per MQTT geschickt werden: cmnd/%topic%/<command> <parameter> Dabei muss die PulseTime vor einem "on" gesetzt werden und gilt dann bis zur nächsten Änderung auf für manuelle Schaltvorgänge über das WebIF bzw am Gerät.

Meine Frage ist wohl sehr unklar formuliert: Wo und wie kann ich aus FHEM mit MQTT2 dieses Command abschicken? Im MQTT2 Device per Publish kam keinerlei Reaktion zurück, eben auch nicht in der Konsole des Sonoff.
Wird beim 4ch pro ein on-for-timer von FHEM oder im Device verwaltet? Wenn es Geräte gibt, die on-for-timer autark verwalten, woran erkenne ich das?
1: FHEM auf Ubuntu, MAX!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, diverse LaCrosse-Sensoren, per remote angebundene DS18B20-Sensoren
2: FHEM auf Raspi 3, Max!Cube, Wand- und Heizkörperthermostate, Eco-Schalter, ht_pitiny-Adapter zu Junkers FW120

TomLee

Mit Backlog ? (List of commands to be executed in sequence separated by ; )

onfor6s:noArg cmnd/sonoffOBI/Backlog POWER on; Delay 60; POWER off

Beta-User

Backlog sollte auch klappen, so wie das klingt, würde dann die PulseTime nicht auf dem Aktor gespeichert, anders, wie wenn man das ausdrücklich vor das "on" setzt.

Was das on-for-timer-Verständnis im allgemeinen angeht: Es gibt afaik nur zwei oder drei Module, die eine on-for-timer-Anweisung wirklich direkt auf dem Aktor verwalten: CUL_HM (und evtl. die CCU.*-Module) und Shelly (ohne MQTT). Bei allen anderen geht das via SetExtensions. Welche Variante "stattfindet", kann man in der Regel an einem list ablesen, für SetExtensions gibt es dabei eine Internal-Struktur "TimedOnOff" (oder so ähnlich), solange SetExtensions aktiv ist.

Zur Lösung des Problems hier:

Backlog wäre (ungetestet!) z.B. so ein Eintrag (CMNDTOPIC ist template-Sprache, muß angepaßt werden, habe hier aber kein list/RAW):
P1_timerOn CMNDTOPIC/Backlog POWER1 on; delay $EVTPART1; POWER1 off
Für die andere Variante wäre evtl. jeweils so eine Zeile zusätzlich:POWER1_timerOn CMNDTOPIC/POWER1 $EVTPART1 on\(Oder generischer, nummerische Kanaleingabe + Einschaltzeit):
ChannelNum_timerOn CMNDTOPIC/POWER$EVTPART1 $EVTPART2 on\
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Zitat von: Beta-User am 25 Juli 2019, 09:27:50

P1_timerOn CMNDTOPIC/Backlog POWER1 on; delay $EVTPART1; POWER1 off


Das wollte mir gerade nicht gelingen und gerade nachfragen  :)

So waren meine Gedanken und da stand in $EVTPART1 immer 2

inttimer:select,0,10,20,30,40,50,60,70,80 cmnd/sonoffOBI/Backlog POWER 1; delay {"$EVTPART1"}; POWER 0

und so klappts jetzt

inttimer:select,0,10,20,30,40,50,60,70,80 cmnd/sonoffOBI/Backlog POWER 1; delay $EVTPART1; POWER 0

rudolfkoenig

ZitatEs gibt afaik nur zwei oder drei Module, die eine on-for-timer-Anweisung wirklich direkt auf dem Aktor verwalten: CUL_HM (und evtl. die CCU.*-Module) und Shelly (ohne MQTT).
on-for-timer stammt vom guten alten FS20.
Das ZWave Protokoll definiert sowas auch, allerdings nur ab SWITCH_BINARY version 2, und mir ist kein Geraet bekannt, der das implementiert.
Erstaunlich, dass aktuelle Protokolle sowas Elementares uebersehen, vmtl. haben die Designer keine praktische Erfahrung.

Beta-User

 :)
@TomLee: Zwei Dinge...
- statt select als widget eventuell selectnumber? (Ist zwar etwas "umständlicher" zu konfigurieren, dafür aber m.E. flexibler, wenn man mehr Werte haben möchte...)
- Wundert mich etwas, dass du POWER verwendest statt POWER1. Hast du auf Kleinschriebung umgestellt? (Ist für "nur-FHEM"-Zwecke m.E. günstiger, weil dann die Symbole usw. passen).


FS20 hatte ich schon gar nicht mehr auf dem Schirm ::) , und das mit ZWave war mir neu (habe bisher nur den FGR-223 und ein paar 222-er Switches im Einsatz, bei letzteren ist es SE-getimed, und der Rollladenaktor soll seine Timer sowieso alleine verwalten). Ist eigentlich schade... Aber FHEM läuft so robust, da macht es nicht sooo viel, wenn das "indirekt" gelöst ist.

(Blöd ist nur, dass ich wegen der ganzen Testerei usw. im Moment recht viele updates fahre und daher auch oft neu starte; dann sind die SE-Timer weg, wenn ich das richtig verstanden habe...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

ZitatBacklog sollte auch klappen, so wie das klingt, würde dann die PulseTime nicht auf dem Aktor gespeichert, anders, wie wenn man das ausdrücklich vor das "on" setzt.

Sry, wo findet das delay denn statt ? auf dem ESP oder ?


09:30:37 MQT: stat/sonoffOBI/RESULT = {"Backlog":"Appended"}
09:30:37 MQT: stat/sonoffOBI/RESULT = {"POWER":"on"}
09:30:37 MQT: stat/sonoffOBI/POWER = on
09:30:37 MQT: stat/sonoffOBI/RESULT = {"Delay":20}
09:30:39 MQT: stat/sonoffOBI/RESULT = {"POWER":"off"}
09:30:39 MQT: stat/sonoffOBI/POWER = off



Zitat- statt select als widget eventuell selectnumber?
 - Wundert mich etwas, dass du POWER verwendest statt POWER1. 

Ich schaus mir an aber ich brauchs nicht, genauso wie das mit dem select aber immer gut zu wissen wie es gehen könnte  :P

Das ist ein Zwischenstecker den ich zum testen erstmal rausholen muss, mir ist völlig wurscht wie der aussieht/konfiguriert ist.

Beta-User

Hmmm, das delay findet auf dem ESP statt; aber die Einheit ist "falsch"/anders als gedacht:

Zitat
Command
Parameters
Delay
2..3600 = set delay between two backlog commands with 0.1 second increment

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Das mit selectnumber hab ich so verstanden das ich schon ein Beispiel finden werde, in keiner .template find ich ein Beispiel und mit der Suche danach bin ich wenig erfolgreich.

Beta-User

selectnumber ist im Wiki unter FHEMWEB/widgets kurz dargestellt und man findet Beispiele dazu im ASC-Wiki-Eintrag.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TomLee

Zitat von: Beta-User am 25 Juli 2019, 10:49:00
selectnumber ist im Wiki unter FHEMWEB/widgets kurz dargestellt und man findet Beispiele dazu im ASC-Wiki-Eintrag.

Ups, ich wusste doch das mir das bekannt vorkommt.  ;D