Hauptmenü

Countdown-Anzeige?

Begonnen von matt_matt, 20 Mai 2017, 00:08:02

Vorheriges Thema - Nächstes Thema

DocCyber

Freut mich, dass es klappt.  :)
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

jorge

Genau das. was ich für meine Bewässerungssteuerung gesucht habe:

Zitat von: DocCyber am 05 Juli 2017, 19:29:00


Der Screenshot zeigt das Level-Widget in Aktion nach etwa 2 Drittel der Vorgabezeit.

Kannst Du vielleicht den vollständigen FTUI und FHEM Code posten?
FHEM.RaspberryPi 2 (HM, 1Wire, Callmonitor.FB 7490, GPIO, I2C, MQTT-Server, MCP23018)
FHEM.RaspberryPi  (FHEM2FHEM, CUL, FS20)
FHEM.RPiZeroW (I2C, 1Wire, python.api, XiaomiBTLESens.MQTT)
FHEM.Win7 (FHEM2FHEM,DBLOG.MySql)
ESPEasy (WEMOSD1, I2C, Analog, 1Wire), Sonoff_T1_3ch, Mobotix QM25, robonect

DocCyber

Zitat von: jorge am 28 August 2017, 08:32:26
Kannst Du vielleicht den vollständigen FTUI und FHEM Code posten?

Hallo Jorge,

hast du meine Posts weiter oben nicht gesehen?
https://forum.fhem.de/index.php/topic,72151.msg656303.html#msg656303
https://forum.fhem.de/index.php/topic,72151.msg658696.html#msg658696

Ich glaube, dass alles ziemlich genau beschrieben ist. Was fehlt dir denn sonst noch?


Klaus
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

jorge

Zitat von: DocCyber am 28 August 2017, 09:04:19


Ich glaube, dass alles ziemlich genau beschrieben ist. Was fehlt dir denn sonst noch?


Klaus


Danke, Klaus für die schnelle Info.
Sorry, hatte den Thread nicht zuende gelesen...
Beim FTUI- Bild werden noch weitere Widgets angezeigt, die im angezeigten HTML Code nicht enthalten sind...

---
Wäre es nicht hilfreich, den switch nach Ende der Laufzeit auf 'off' zu setzen? 

LG Jorge
FHEM.RaspberryPi 2 (HM, 1Wire, Callmonitor.FB 7490, GPIO, I2C, MQTT-Server, MCP23018)
FHEM.RaspberryPi  (FHEM2FHEM, CUL, FS20)
FHEM.RPiZeroW (I2C, 1Wire, python.api, XiaomiBTLESens.MQTT)
FHEM.Win7 (FHEM2FHEM,DBLOG.MySql)
ESPEasy (WEMOSD1, I2C, Analog, 1Wire), Sonoff_T1_3ch, Mobotix QM25, robonect

DocCyber

#19
Zitat von: jorge am 28 August 2017, 09:46:36
Beim FTUI- Bild werden noch weitere Widgets angezeigt, die im angezeigten HTML Code nicht enthalten sind...
Ja, das stimmt. Aber das hat mit dem Kern des Threads nur indirekt zu tun und ich habe es daher nicht beschrieben.
Here you are:

In FHEM ergänzt du die Definition des Dummys wtime um eine Auswahlliste für die Bewässerungszeit:
attr wtime setList total:60,120,180,240,300,600
Diese Liste kannst du dir im FTUI durch das select-Widget anzeigen lassen.


<div data-type="select"
data-device="wtime "
data-get="total"
data-set="total"
data-cmd="setreading"
class="medium right-space">
</div>

<div data-type="checkbox"
data-device="switch"
class="green right-space">
</div>

<div data-type="level"
data-device="wtime"
data-get="elapsed"
data-max="total"
class="horizontal left mini right-space" >
</div>

<div data-type="label"
data-device="wtime"
data-get="total"
class="left">
</div>&nbsp;Minuten

Ich mache es bei mir so, dass ich die Listenzeiten in Minuten definiere, den gewählen Wert dann in Sekunden umrechne und des Ergebnis in einem weiteren Reading totals (zusätzlich zu total) speichere. Dann muss die Definition des Select-Widgets entsprechend angepasst werden.

Zitat
Wäre es nicht hilfreich, den switch nach Ende der Laufzeit auf 'off' zu setzen?
Natürlich. Ich mach es auch so, hab's nur nicht in den Code geschrieben.
Du hängst beim notify für den Schalter halt einfach noch den entsprechenden Befehl dran, also
define n_set_timer_action notify . . . . .  fhem("setreading wtime elapsed 0");; fhem("set switch off")} }


Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

tomhead

Hallo, ich möchte das Thema mal wieder vorkramen..
Ich habe versucht, das entsprechend bei mir umzusetzen, in FTUI kann ich den Countdown auch starten und der Balken füllt sich langsam aber der Schalter_Wasser_Vorgarten wird am Ende nicht wieder auf off gesetzt. Ich vermute, dass hängt irgendwie mit der Verkettung der Befehle mit fhem("set...");; fhem("set ...");;..  zusammen, ich bin aber bisher nicht dahinter gekommen, wo der Fehler steckt. Ich habe es mit einem ; und zwei ;; zwischen den Befehlen probiert, aber ohne Erfolg. Kann jemand helfen ,woran es liegen könnte?

Danke

define wtime dummy
attr wtime readingList elapsed, total
attr wtime room Garten
attr wtime setList elapsed:0 total:10,60,120,180,240,300,600
attr wtime webCmd total
attr wtime widgetOverride total:10,60,120,180,240,300,600

define Schalter_Wasser_Vorgarten dummy
attr Schalter_Wasser_Vorgarten room Garten
attr Schalter_Wasser_Vorgarten setList on off

define n_set_timer_action notify Schalter_Wasser_Vorgarten { if ($EVENT eq "on") {fhem("set on_timer_action active")} else {fhem("set on_timer_action inactive");; fhem("setreading wtime elapsed 0");; fhem("set Schalter_Wasser_Vorgarten off")} }
attr n_set_timer_action room Garten

define on_timer_action at +*00:00:01 {my $e = ReadingsVal("wtime", "elapsed", 0);; $e += 1;; if ($e > ReadingsVal("wtime", "total", 0)) {fhem("set on_timer_action inactive");; $e = 0;;} fhem("setreading wtime elapsed $e");;}
attr on_timer_action room Garten


tomhead

So, habe es mittlerweile selber lösen können. In der on_timer_action def muss auch noch ein "set Schalter_Wasser_Vorgarten off" rein, dann klappt es auch mit dem Ausschalten ;-)
Falls das mal jemand nachbauen will, hier mein kompletter Code für FHEM und FTUI  (Danke nochmal an DocCyber für die wesentlichen Angaben dafür).
Ich habe auch zusätzliche userReadings für die Angaben in Minuten ergänzt.
Der Befehl set Ventil_Wasser_Vorgarten on schaltet dann zusätzlich ein an einem Homematic HM-LC-SW4-DR-2  4-fach-Schalter angeschlossenes Hunter-Magnet-Ventil.


define watertimer_Vorgarten dummy
attr watertimer_Vorgarten readingList elapsed, total, total_s, Rest
attr watertimer_Vorgarten room Garten
attr watertimer_Vorgarten setList elapsed:0,1 total:1,5,10,20,25,30,35,40,45,50,55,60
attr watertimer_Vorgarten stateFormat elapsed
attr watertimer_Vorgarten userReadings total_s {ReadingsVal("watertimer_Vorgarten","total",0)*60},Rest {ReadingsVal("watertimer_Vorgarten","elapsed",0)/60}
attr watertimer_Vorgarten webCmd total
attr watertimer_Vorgarten widgetOverride total:1,5,10,20,25,30,35,40,45,50,55,60

define Schalter_Wasser_Vorgarten dummy
attr Schalter_Wasser_Vorgarten room Garten
attr Schalter_Wasser_Vorgarten setList on off

define n_set_timer_action_Vorgarten notify Schalter_Wasser_Vorgarten { if ("$EVENT" ne "off") {fhem("set on_timer_action_Vorgarten active ;; set Ventil_Wasser_Vorgarten on")} else {fhem("set on_timer_action_Vorgarten inactive ;; setreading watertimer_Vorgarten elapsed 0 ;; set Schalter_Wasser_Vorgarten off ;; set Ventil_Wasser_Vorgarten off")} }
attr n_set_timer_action_Vorgarten room Garten

define on_timer_action_Vorgarten at +*00:00:01 {my $e = ReadingsVal("watertimer_Vorgarten", "elapsed", 0);; $e += 1;; if ($e > ReadingsVal("watertimer_Vorgarten", "total_s", 0)) {fhem("set on_timer_action_Vorgarten inactive ;; set Schalter_Wasser_Vorgarten off ;; set Ventil_Wasser_Vorgarten off");; $e = 0;;} fhem("setreading watertimer_Vorgarten elapsed $e");;}
attr on_timer_action_Vorgarten room Garten



    <div data-type="label" class="">Vorgarten:</div>
    <div data-type="select" data-device="watertimer_Vorgarten" data-get="total" data-set="total" data-cmd="setreading" class="inline medium"></div>
    <div data-type="checkbox" data-device="Schalter_Wasser_Vorgarten" class="inline green"></div>
    <div data-type="level" data-device="watertimer_Vorgarten" data-get="elapsed" data-max="total_s" class="inline horizontal top-narrow" ></div>
    <div data-type="label" data-post-text=" Minuten" data-device="watertimer_Vorgarten" data-get="Rest" data-fix="0" class="right"></div>