Autor Thema: Neues Modul 70_HYDRAWISE.pm  (Gelesen 3544 mal)

Offline xasher

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 71
Neues Modul 70_HYDRAWISE.pm
« am: 08 April 2020, 08:33:14 »
Hallo zusammen,

ab heute wird das Modul 70_HYDRAWISE über update verteilt. Das Modul liest die Daten von Hunter Hydrawise Controllern, die im WLAN hängen. Die Daten können dann über die API Schnittstelle gelesen werden, sowie vereinzelte Aktionen ausgelöst werden.

Für die Verwendung muss ein API-KEY bei Hunter beantrag werdent. Das geht einfach im Benutzerkonto

In FHEM wird es wie folgt definiert
define myHydrawise HYDAWISE <API-KEY> <Iintervall>
Unter 60 Sekunden ist nicht zu empfehlen, da die Schnittstelle von Hunter sonst einige Minuten sperrt, wenn zu oft angefragt wird.

Link zum Commandref:

Das Thema ist aus folgendem Forumsbeitrag entstanden

Viel Spaß beim Testen.
Grüße,
Alex
« Letzte Änderung: 08 April 2020, 08:38:50 von xasher »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1690
  • und es werden immer mehr...
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #1 am: 15 September 2020, 20:31:42 »
Hallo xasher

Ich habe deine Hydrawise Modul eingesetzt und es funktioniert sehr gut.

Ich habe eine Bitte: Kannst Du die Readings "next" und "run_minutes" permanent machen.
Gegenwärtig löschen sich diese sobald die relays wieder deaktiviert sind.

Das bedeutet, man kann darauf keine notifys aufbauen.   :-[
Danke

Gruß
    Sailor
******************************
Man wird immer besser...

Offline xasher

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 71
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #2 am: 16 September 2020, 07:58:45 »
Hi Sailor,

vielen Dank für den Hinweis. Bei mir ist gerade geschäftlich viel los. Aber es macht natürlich Sinn es so umzusetzen.
Gibt es aus deiner Erfahrung bestimmte Defaultwerte, wenn der Wert nicht gesetzt ist?

Grüße,
Alex

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1690
  • und es werden immer mehr...
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #3 am: 16 September 2020, 10:18:56 »
Hi Alex

vielen Dank für den Hinweis. Bei mir ist gerade geschäftlich viel los. Aber es macht natürlich Sinn es so umzusetzen.
Gibt es aus deiner Erfahrung bestimmte Defaultwerte, wenn der Wert nicht gesetzt ist?

Ich habe mal eine Zone für eine Minute aktiviert.
Anbei die beiden Unterschiede:

{"relay_id":2629180,"time":1576800000, "type":110,"run":0, "relay":1,"name":"Main Walkway","period":259200,"timestr":"", "stop":1},
{"relay_id":2629180,"time":1, "type":106,"run":53, "relay":1,"name":"Main Walkway","period":259200,"timestr":"Now","stop":1},

Basierend auf der API Beschreibung https://support.hydrawise.com/hc/en-us/article_attachments/360058265154/Hydrawise_REST_API.pdf


"run" ist korrekt in Sekunden Restlaufzeit und muss am Ende auch "0" haben

"timestring" ist im deaktivierten Zustand "undef".
Vielleicht sollte man das "undef" ("") umwandeln in "idle" oder "no_next_schedule".

"time" hat im deaktivierten Zustand 1576800000s = 18,25 Tage.
Vielleicht sollte man das im deaktivierten Zustand umwandeln in "none".

"Type", "Stop" und "Period" sind nicht dokumentierte Datensätze.  :o
Da muss man wohl mal Hunter fragen...

Gruß
   Sailor
******************************
Man wird immer besser...

Offline xasher

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 71
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #4 am: 21 September 2020, 09:02:41 »
Hallo Sailor,

ich habe jetzt das next Reading auf "idle" erweitert. Bevor ich das aber einchecke nochmals die Nachfrage, ob das Reading "run_minutes" bei dir rausfällt. Generell lösche ich alle Readings, die nicht mehr im json sind. Aber "run_minutes" sollte immer gesetzt sein, wenn es einmal in deiner Konfiguration definiert ist.

Siehe Schreenshot.

Viele Grüße,
Alex

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1690
  • und es werden immer mehr...
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #5 am: 22 September 2020, 20:46:11 »
Hallo Alex

Bevor ich das aber einchecke nochmals die Nachfrage, ob das Reading "run_minutes" bei dir rausfällt. Generell lösche ich alle Readings, die nicht mehr im json sind.
Aber "run_minutes" sollte immer gesetzt sein, wenn es einmal in deiner Konfiguration definiert ist.

Leider fliegt das run_minutes wieder raus

Internals:
   CFGFN      ./cfg/Room_OS.cfg
   DEF        0C6D-ABE8-ABE8-49DB 60
   FUUID      5f4678be-f33f-02bc-b4c0-c9558dd2dde33528
   INTERVAL   60
   NAME       OS_Hydrawise
   NR         3002
   STATE      on
   TYPE       HYDRAWISE
   OLDREADINGS:
   READINGS:
     2020-09-22 20:43:19   controller_counts 1
     2020-09-08 20:40:50   controller_id   396580
     2020-09-22 20:43:19   ct1_controller_id 396580
     2020-09-22 20:43:19   ct1_controller_message All good!
     2020-09-22 20:43:19   ct1_controller_name My Controller
     2020-09-22 20:43:19   ct1_last_contact 2020-09-22 20:05:12
     2020-09-22 20:43:19   ct1_serial_number 0590a1bb
     2020-09-22 20:43:19   cur_controller_id 396580
     2020-09-22 20:43:19   cur_controller_name My Controller
     2020-09-22 20:43:19   customer_id     407812
     2020-09-22 20:43:19   presence        present
     2020-09-22 20:43:19   relay_counts    10
     2020-09-22 20:43:19   rl10_name       Fresh Water
     2020-09-22 20:43:19   rl10_relay      10
     2020-09-22 20:43:19   rl10_relay_id   2629280
     2020-09-03 10:57:55   rl12_name       Well Pump
     2020-09-03 10:57:55   rl12_relay      12
     2020-09-03 10:57:55   rl12_relay_id   2628802
     2020-09-22 20:43:19   rl1_name        Main Walkway
     2020-09-22 20:43:19   rl1_relay       1
     2020-09-22 20:43:19   rl1_relay_id    2629180
     2020-09-22 20:43:19   rl2_name        Danielles Garde
     2020-09-22 20:43:19   rl2_relay       2
     2020-09-22 20:43:19   rl2_relay_id    2629204
     2020-09-22 20:43:19   rl3_name        Lawn Sprinkler
     2020-09-22 20:43:19   rl3_relay       3
     2020-09-22 20:43:19   rl3_relay_id    2629212
     2020-09-22 20:43:19   rl4_name        South-West Patt
     2020-09-22 20:43:19   rl4_relay       4
     2020-09-22 20:43:19   rl4_relay_id    2629224
     2020-09-22 20:43:19   rl5_name        Jurassic Garden
     2020-09-22 20:43:19   rl5_relay       5
     2020-09-22 20:43:19   rl5_relay_id    2629238
     2020-09-22 20:43:19   rl6_name        Greenhouse
     2020-09-22 20:43:19   rl6_relay       6
     2020-09-22 20:43:19   rl6_relay_id    2629258
     2020-09-22 20:43:19   rl7_name        Pond Garden
     2020-09-22 20:43:19   rl7_relay       7
     2020-09-22 20:43:19   rl7_relay_id    2629269
     2020-09-22 20:43:19   rl8_name        Pattio House
     2020-09-22 20:43:19   rl8_relay       8
     2020-09-22 20:43:19   rl8_relay_id    2629270
     2020-09-22 20:43:19   rl9_name        East Garden
     2020-09-22 20:43:19   rl9_relay       9
     2020-09-22 20:43:19   rl9_relay_id    2629278
     2020-09-22 20:43:19   state           on
   helper:
     APIKEY     0C6D-ABE8-ABE8-49DB
Attributes:
   DbLogExclude .*
   event-on-change-reading .*
   room       Outside
   webCmd     stopall renewContext renewRelays

Wundert mich aber auch nicht:
Zeile 782: readingsDelete( $hash, $reading );
Anbei mal der gesamte Breakdown des JSON-Strings im Ruhezustands


time 1600800691
nextpoll 60
message ""
simRelays 1
options 1
stupdate 0
master 0
master_timer 0
master_post_timer 0
expanders []
sensors
0
input 0
type 3
mode 0
timer 0
offtimer 0
rate 5
relays []
1
input 1
type 1
mode 1
timer 0
offtimer 0
relays []
relays
0
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 1
name "Main Walkway"
period 259200
timestr ""
stop 1
1
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 2
name "Danielles Garde"
period 259200
timestr ""
stop 1
2
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 3
name "Lawn Sprinkler"
period 259200
timestr ""
stop 1
3
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 4
name "South-West Patt"
period 259200
timestr ""
stop 1
4
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 5
name "Jurassic Garden"
period 259200
timestr ""
stop 1
5
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 6
name "Greenhouse"
period 259200
timestr ""
stop 1
6
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 7
name "Pond Garden"
period 259200
timestr ""
stop 1
7
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 8
name "Pattio House"
period 259200
timestr ""
stop 1
8
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 9
name "East Garden"
period 259200
timestr ""
stop 1
9
relay_id xxxxxxx
time 1576800000
type 110
run 0
relay 10
name "Fresh Water"
period 259200
timestr ""
stop 1



Gruß
    Sailor
« Letzte Änderung: 22 September 2020, 20:54:54 von Sailor »
******************************
Man wird immer besser...

Offline xasher

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 71
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #6 am: 24 September 2020, 09:17:14 »
Hi Sailor,

ich habe es mal wie im Anhang eingecheckt...

Viele Grüße,
Alex

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1690
  • und es werden immer mehr...
Antw:Neues Modul 70_HYDRAWISE.pm
« Antwort #7 am: 21 November 2020, 18:16:03 »
Ein herzerfrischendes Moin vom achtern Diek vorweg

Ich habe jetzt meine Bewaesserungskreise im ftui eingearbeitet.
Wer Interesse an dem Code hat:

<li data-row="1" data-col="1" data-sizex="3" data-sizey="6" class="semitransparent">
<header class = "semitransparentheader">Sprinkler
</header>
<BR>
<table width="100%">
<tbody>

<tr>
<td colspan="3" class="big">HYDRAWISE Irrigation Control
</td>
</tr>
<tr>
<td colspan ="3">
<div class = "big"
data-type = "push"
data-device = "OS_Hydrawise"
data-get = "ct1_controller_message"
data-get-on = "Error"
data-icon = "mi-error fa-blink"
data-on-color = "#FF0000"
data-hide = "ct1_controller_message"
data-hide-on = "All good!"
data-fhem-cmd = '{fhem("set  OS_Hydrawise renewContext")}'>
</div>
<div data-type = "image"
data-url = "../images/default/Hunter-PHC.png"
data-size = "84px"
data-device = "OS_Hydrawise"
data-hide = "ct1_controller_message"
data-hide-on   = "^((?!All good\!).)*$"
data-hide-off  = "All good!">
</div>
</td>
</tr>
<tr>
<td colspan="3" class="big">
<BR>
All Sprinkler
</td>
</tr>
<tr>
<td colspan="3">
<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stopall");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline big" >
</div>
</td>
</tr>
<tr>
<td colspan="3" class="big">
<BR>
Individual Zones
</td>
</tr>
<tr>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl1_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl1_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl1_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl1_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl1_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl1_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl1_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl1_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
<td></td>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl2_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl2_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl2_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl2_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl2_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl2_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl2_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl2_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
</tr>
<tr>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl3_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl3_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl3_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl3_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl3_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl3_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl3_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl3_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
<td></td>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl4_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl4_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl4_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl4_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl4_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl4_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl4_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl4_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
</tr>
<tr>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl5_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl5_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl5_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl5_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl5_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl5_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl5_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl5_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
<td></td>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl6_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl6_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl6_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl6_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl6_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl6_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl6_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl6_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
</tr>
<tr>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl7_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl7_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl7_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl7_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl7_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl7_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl7_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl7_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
<td></td>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl8_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl8_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl8_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl8_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl8_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl8_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl8_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl8_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
</tr>
<tr>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl9_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl9_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl9_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl9_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl9_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl9_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl9_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl9_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
<td></td>
<td><BR><div class="big"
data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl10_name">
</div>

<div data-type = "symbol"
data-device = "OS_Hydrawise"
data-get = "rl10_next"
data-states = '["Running", "idle"]'
data-icons = '["oa-sani_sprinkling fa-blink","oa-sani_sprinkling"]'
data-colors = '["blue","#4C5D71"]'
class = "bigger inline">
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "fa-hand-stop-o"
data-hide = "rl10_next"
data-hide-on = "idle"
data-hide-off = "Running"
data-fhem-cmd = '{fhem("set  OS_Hydrawise stop " . ReadingsVal("OS_Hydrawise", "rl10_relay_id",0));; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "push"
data-device = "OS_Hydrawise"
data-icon = "oa-audio_play"
data-hide = "rl10_next"
data-hide-on = "Running"
data-hide-off = "idle"
data-fhem-cmd = '{fhem("set  OS_Hydrawise run " . ReadingsVal("OS_Hydrawise", "rl10_relay_id",0) . " 600");; fhem("set OS_Hydrawise renewRelays")}'
class = "inline" >
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl10_run_minutes"
data-fix = "2"
data-hide-on = "none"
data-pre-text = "Irrigation Time left: "
data-unit = " min">
</div>

<div data-type = "label"
data-device = "OS_Hydrawise"
data-get = "rl10_run_minutes"
data-hide-on = "^((?!none).)*$"
data-substitution='["none","Irrigation OFF"]'>
</div>
</td>
</tr>
</tbody>
</table>
</li>

Die Datei "Hunter-PHC" muss unter "/opt/fhem/www/images/default" abgelegt werden.
Rechtevergabe nicht vergessen!

Gruss
    Sailor
******************************
Man wird immer besser...