[gelöst]Poolpumpe mit WeekdayTimer abhängig von Pooltemperatur ausschalten

Begonnen von Bracew, 22 Juni 2019, 17:20:32

Vorheriges Thema - Nächstes Thema

Bracew

Ich habe mal beide Varianten bei meinem FHEM versucht. Heraus kommt immer, dass keine "off" Zeit im Device steht, siehe Bild (von der 2. Variante).

define Poolpumpe1 structure room Lampe_BS4
attr   Poolpumpe1 comment FunkSchalter für Poolpumpe
attr   Poolpumpe1 group Pool1
attr   Poolpumpe1 room test
attr   Poolpumpe1 icon scene_swimming

#define PoolpumpeAutoTest WeekdayTimer Poolpumpe1 de 09:00:00|on { if isPoolpumpeAutomatik() {my $duration = HOURSECONDS+ReadingsVal('SensorPool1','temperature',20)*12*MINUTESECONDS;; fhem ("set $NAME on-for-timer $duration") }}
define PoolpumpeAutoTest WeekdayTimer Poolpumpe1 de 09:00:00|on { my $duration = HOURSECONDS+ReadingsVal('SensorPool1','temperature',20)*12*MINUTESECONDS;; fhem ("set $NAME on-for-timer $duration") if isPoolpumpeAutomatik() }
attr   PoolpumpeAutoTest commandTemplate set $NAME  $EVENT
attr   PoolpumpeAutoTest group Pool1
attr   PoolpumpeAutoTest room test
attr   PoolpumpeAutoTest icon scene_swimming


Wie testest Du das? kannst Du unter des Tages eine Neuberechnung machen lassen? Ich dachte dies geschieht immer nur um Mitternacht.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

ich sehe da nur ein ";" in DEF und command?

Wenn du die Berechnung in der Perl-Anweisung hinten machen läßt, wird das zur Ausführugnszeit berechnet.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bracew

Ich hatte unterdessen den Auszug aus der fhem.cfg noch zu vor eingefügt. Entschuldigung.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bracew

FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Bitte möglichst cfg-editing unterlassen... Eine RAW-Def oder ein list tut es auch.

Was den screenshots angeht: Bitte sieh dir die Detailseite des Aktors an. MWn wird die Info auf der WDT-Seite nicht erneuert. (Alternativ: refreshen).

Du kannst zu Testzwecken auch das "SwitchInThePast" (oder so) setzen. Dann müßte eine Änderung auch direkt eine Neuberechnung der letzten Schaltanweisung erfolgen und diese ausgeführt werden (beim Neustart und wohl auch beim Ändern der DEF von 9:00 Uhr auf 9:01 Uhr).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bracew

Ich habe im DeviceOverview mit Klick auf DEF die Zeit auf 09:01:00 geändert, anschließend Save config und Restart, aber keine Änderung.

Wie muss ich das mit dem "SwitchInThePast" genau setzen. Übrigens, Google führt mich dazu auf Seiten für Brustvergrößerungen.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

es gibt ein Attribut, das irgendwie so heißt (steht auch in der cref). Das auf 1 oder on setzten, was auch immer davon in FHEMWEB verfügbar ist...

Ohne das Attribut kannst du ändern und neustarten, wie du magst, 9:00 Uhr ist vorbei :) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bracew

Also, hier die RAW-Def:
defmod PoolpumpeAutoTest WeekdayTimer Poolpumpe1 de 09:00:00|on { my $duration = HOURSECONDS+ReadingsVal('SensorPool1','temperature',20)*12*MINUTESECONDS;;;; fhem ("set $NAME on-for-timer $duration") if isPoolpumpeAutomatik() }
attr PoolpumpeAutoTest commandTemplate set $NAME  $EVENT
attr PoolpumpeAutoTest group Pool1
attr PoolpumpeAutoTest icon scene_swimming
attr PoolpumpeAutoTest room test
attr PoolpumpeAutoTest switchInThePast 1

setstate PoolpumpeAutoTest on
setstate PoolpumpeAutoTest 2019-07-02 18:03:08 currValue on
setstate PoolpumpeAutoTest 2019-07-02 18:03:08 nextUpdate 2019-07-03 09:00:00
setstate PoolpumpeAutoTest 2019-07-02 18:03:08 nextValue on
setstate PoolpumpeAutoTest 2019-07-02 18:03:08 state on


Mal sehen ob und ggf. wie es morgen funktioniert.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Vielleicht noch zwei Anmerkungen:
- das mit dem Attribut war eigentlich nur für Testzwecke gedacht. Im laufenden Betrieb braucht man das bei dieser Art Zieldevice m.E. nicht.
- Das mit der Berechnung ist so: "hinten" wir der Code (vereinfacht gesagt) dann ausgewertet, wenn einer der Schaltzeitpunkte erreicht ist. Man kann aber auch die Schaltzeitpunkte in Perl berechnen. Diese Codes werden dann um Mitternacht jeweils neu berechnet, der Rückgabewert der aufgerufenen Funktion muß aber eine gültige Uhrzeit zurückliefern (Format HH:MM o. HH:MM:SS)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bracew

Hallo an Alle,
hallo Beta-User,

nachdem nun diese Woche der neue Lötkolben zusammen mit einem Sonoff S20 (https://www.amazon.de/Komforthaus-Schaltsteckdose-deutsche-Version-Android/dp/B07BRZ7JDX/ref=sr_1_6?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=sonoff+s20&qid=1562423547&s=gateway&sr=8-6) eingetroffen ist, habe ich den Sonoff S20 auf Tasmota geflasht (https://github.com/arendst/Sonoff-Tasmota/wiki).

Den Sonoff S20 konnte ich in FHEM via MQTT einbinden:
# #################################################################
# FHEM eigenen MQTT Broker anlegen - FHEM als MQTT-Server
# https://wiki.fhem.de/wiki/MQTT#MQTT2_CLIENT
# #################################################################
define myBroker MQTT2_SERVER 1883 global
setuuid myBroker 5d1e4efa-f33f-8****

# #################################################################
# Pool-Pumpe automatisch und per Hand schalten
# #################################################################
#
# Welcher Schalter fuer Pool mit Handschaltung: Sonoff-S20 via MQTT2
#
define Poolpumpe MQTT2_DEVICE DVES_B0B3EB
setuuid Poolpumpe 5d1f3d1b-***
attr Poolpumpe IODev myBroker
attr Poolpumpe autocreate 0
attr Poolpumpe model A_01a_tasmota_basic_state_power1
attr Poolpumpe readingList tele/sonoff/LWT:.* LWT\
  tele/sonoff/STATE:.* { json2nameValue($EVENT) }\
  tele/sonoff/SENSOR:.* { json2nameValue($EVENT) }\
  tele/sonoff/INFO.:.* { json2nameValue($EVENT) }\
  stat/sonoff/RESULT:.* { json2nameValue($EVENT) }
attr Poolpumpe room Garten
attr Poolpumpe group Pool
attr Poolpumpe setList off:noArg    cmnd/sonoff/POWER1 0\
  on:noArg     cmnd/sonoff/POWER1 1\
  toggle:noArg cmnd/sonoff/POWER1 2
attr Poolpumpe setStateList on off toggle
attr Poolpumpe stateFormat POWER1
attr Poolpumpe icon scene_swimming
#
# In Weboberflaeche anklicken ob Automatik An oder Aus sein soll
#
define PoolpumpeAutomatik dummy
attr   PoolpumpeAutomatik devStateIcon ja:ampel_gruen:nein nein:ampel_rot:ja
attr   PoolpumpeAutomatik group Pool
attr   PoolpumpeAutomatik icon scene_swimming
attr   PoolpumpeAutomatik room Garten
attr   PoolpumpeAutomatik sortby 1
attr   PoolpumpeAutomatik webCmd ja:nein
#
# Automatische Schaltung wenn Automatik an mit variabler Endzeit
# berechnet aus Temperatur
# https://forum.fhem.de/index.php/topic,101687.msg951463.html#msg951463
#
define PoolpumpeAuto WeekdayTimer Poolpumpe 09:00:00|on { my $duration = HOURSECONDS*2+ReadingsVal('SensorPool2','temperature',20)*12*MINUTESECONDS;;;; fhem ("set $NAME on-for-timer $duration") if isPoolpumpeAutomatik() }
attr   PoolpumpeAuto commandTemplate set $NAME  $EVENT
attr   PoolpumpeAuto group Pool
attr   PoolpumpeAuto room hidden
attr   PoolpumpeAuto icon scene_swimming
#


Heute habe ich beobachten können, dass um 9:00 Uhr die Pumpe pünktlich anging und nach Ablauf der berechneten Zeit von 7 Std. und 2 Min. um 16:02 Uhr wieder ausging.  ;D

Ende Gut, alles Gut, aber mit Sonoff S20 statt OBI-Steckdose und mit MQTT statt Esp-Easy.
Hätte vielleicht auch in der OBI-ESPEasy Kombination funktioniert, wenn ich den "Richtigen" .bin File auf die OBI-Steckdose geflasht hätte. Grundfehler war meiner Vermutung nach, dass ich den *normal_ESP8266_4M.bin statt den *normal_ESP8266_1M.bin genommen hatte.

Na ja, jedenfalls freue ich mich.
An dieser Stelle vielen, vielen Dank an Beta-User für seine geduldige Hilfe.

Gruß Bracew

P.S.: Gibt es eine Möglichkeit die An- und Ausschaltzeit auf der FHEM Oberfläche anzuzeigen, zur Kontrolle?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Schön, dass es jetzt läuft, wie du das gerne hättest :) .

Bei laufenden on-for-timer-Anweisungen (&Co) gibt es eine Teilstruktur bei den Internals des geschalteten Geräts, in denen was dazu drinsteht; einfach mal ein "list" machen und jeweils testen (die aktualisierten Daten werden aber nur sichtbar, wenn du die Seite dann jeweils neu lädst).

Ansonsten:
-jeweils RAW-Definitionen wären besser als der cfg-Auszug (weniger wegen dir selbst, sondern mehr wegen eventueller Nachahmer, die sich damit evtl. ein Bein stellen, weil sie den falschen Editor benutzen oder whatever...)
- [gelöst]? (ersten Beitrag editieren)

Schönes WE noch,

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

Bracew

Mit "Anzeigen" meinte ich: auf der Weboberfläche, also zum Beispiel in der Gruppe Pool.

Zum Beispiel, wie beigefügter manipulierter Screenshot:
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Es steht in einem Internal bzw. man kann auch laufende Timer auswerten/sich listen lassen (siehe cancel).
Ergo kann man das auch mit viel Aufwand in STATE bringen via stateFormat (Perl, InternalVal...).

Etwas einfacher (aber auch vereinfacht) müßte es gehen, wenn du dir die Attribute zu MQTT2_DEVICE mal näher ansiehst: Da hat Rudi was in MQTT2_DEVICE eingebaut, dass man zumindest die Frage, ob ein Timer läuft, per Symbol angezeigt bekommt. Das dürfte in der Regel ausreichen, oder? Wenn du kontrollieren willst, wie lange der Timer läuft, mußt du dann eben in die list-Anzeige oder (wenn das geht, ich nutze dafür ggf. erweiterten eigenen code) läßt dir mit cancel anzeigen, was so alles ansteht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bracew

Zitat...auch mit viel Aufwand...

Ah ok, dann hat sich die Frage erübrigt.
Schönes Wochenende wünscht
Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Beta-User

Na ja, du könntest  einiges dabei lernen...

Jedenfalls: "setExtensionsEvent" auf "1" zu setzen, ist nicht ganz so aufwändig, und sollte schon mal eine Basisinfo liefern ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors