[gelöst]Frage zu Best-Practise Gartenbewässerung steuern mit Wetterbericht

Begonnen von josburg, 21 März 2016, 21:50:30

Vorheriges Thema - Nächstes Thema

josburg

Klasse, vielen Dank Icinger,

habe jetzt alles so mal angelegt, wie Du es beschrieben hast.
Die List-Ausgabe sieht jetzt so aus:

Internals:
   CFGFN
   DEF        SENSOR_REGENSENSOR
   DEV_REGEXP SENSOR_REGENSENSOR
   NAME       Regen_Statistik
   NR         654
   NTFY_ORDER 10-Regen_Statistik
   PREFIX     stat
   STATE      Waiting for notifications
   TYPE       statistics
   Readings:
     2016-03-28 14:09:11   monitoredDevicesUnsupported SENSOR_REGENSENSOR#HTTPMOD
     2016-03-28 14:09:11   nextPeriodChangeCalc 2016-03-28 14:59:55
   Fhem:
     modulVersion $Date: 2015-12-03 18:21:21 +0100 (Thu, 03 Dec 2015) $
Attributes:
   deltaReadings REGENMENGE
   room       Statistik
   singularReadings SENSOR_REGENSENSOR:REGENMENGE:Delta:6h
   specialDeltaPeriodHours 6


Wenn ich alles richtig verstanden habe, muss ich jetzt bis 14:59 Uhr warten, da dann "nextPeriodChangeCalc" ausgeführt wird.
Korrekt?

Wenn alles gut läuft, regnet es bei mir gleich auch ein bißchen ;-)

Vielen Dank nochmals.

Grüße
Jens

josburg

Hallo,

ich mal wieder - geregnet hat es in der Zwischenzeit "leider" nicht...
In meiner FHEM-Oberfläche tut sich zwar einiges, aber so richtig interpretieren kann ich es leider nicht.

Zunächst mal das Ergebnis von "list Regen_Statistik":

Internals:
   CFGFN
   DEF        SENSOR_REGENSENSOR
   DEV_REGEXP SENSOR_REGENSENSOR
   NAME       Regen_Statistik
   NR         654
   NTFY_ORDER 10-Regen_Statistik
   PREFIX     stat
   STATE      Updated stats for: SENSOR_REGENSENSOR
   TYPE       statistics
   Readings:
     2016-03-28 14:57:11   monitoredDevicesHTTPMOD SENSOR_REGENSENSOR
     2016-03-28 14:09:11   monitoredDevicesUnsupported SENSOR_REGENSENSOR#HTTPMOD
     2016-03-28 15:59:55   nextPeriodChangeCalc 2016-03-28 16:59:55
     2016-03-28 16:47:12   state           Updated stats for: SENSOR_REGENSENSOR
   Fhem:
     modulVersion $Date: 2015-12-03 18:21:21 +0100 (Thu, 03 Dec 2015) $
Attributes:
   deltaReadings REGENMENGE
   room       Statistik
   singularReadings SENSOR_REGENSENSOR:REGENMENGE:Delta:6h
   specialDeltaPeriodHours 6


Das Ergebnis von "list SENSOR_REGENSENSOR" sieht aktuell folgendermaßen aus:

Internals:
   BUSY       0
   DEF        http://23.97.212.128:8080/api/v1/dashboard 600
   GetSeq     0
   HTTPHEADER
   Interval   600
   LASTSEND   1459177030.45915
   MainURL    http://23.97.212.128:8080/api/v1/dashboard
   NAME       SENSOR_REGENSENSOR
   NR         230
   STATE      7.3 Grad, Regenmenge 269.0 mm
   TRIGGERTIME 1459177630.45812
   TRIGGERTIME_FMT 2016-03-28 17:07:10
   TYPE       HTTPMOD
   addr       http://23.97.212.128:8080
   buf
   code       200
   data       devicetoken=c469a2c5-2f82464f-a73969cc-e1e3bf15-2eb7db2b-2b2cc4fb-a87fd82a-f596ab77&vendorid=3D3BCADD-79C6-4AEE-9F8B-73C83C047122&phoneid=032330673013&version=1.21&build=248&executable=Mobile Alerts&bundle=de.synertronixx.remotemonitor&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=1&timestamp=1453237425&requesttoken=07436acf2dce9a096aef931736865952&deviceids=083877BD9DF1,&measurementfroms=,0,0,0,0,0,&measurementcounts=,50,50,50,50,50,
   displayurl http://23.97.212.128:8080/api/v1/dashboard
   header     Content-Type: application/x-www-form-urlencoded
   host       23.97.212.128
   httpheader HTTP/1.1 200 OK

Cache-Control: no-cache

Pragma: no-cache

Content-Length: 46719

Content-Type: application/json; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.5

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Date: Mon, 28 Mar 2016 14:47:19 GMT

Connection: close
   ignoreredirects 0
   loglevel   4
   path       /api/v1/dashboard
   protocol   http
   redirects  0
   timeout    2
   url        http://23.97.212.128:8080/api/v1/dashboard
   QUEUE:
   Readings:
     2016-03-28 16:47:12   REGENMENGE      269
     2016-03-28 16:47:12   TEMP            7.3
     2016-03-28 16:47:12   statREGENMENGE  Hour: 0 Day: 0 Month: 0 Year: 0 (since: 2016-03-28_14:57:11 )
     2016-03-28 15:59:55   statREGENMENGELast Hour: 0 Day: - Month: - Year: -
     2016-03-28 15:59:55   statREGENMENGESpecialPeriod 0 (1.hours)
   Request:
     data       devicetoken=c469a2c5-2f82464f-a73969cc-e1e3bf15-2eb7db2b-2b2cc4fb-a87fd82a-f596ab77&vendorid=3D3BCADD-79C6-4AEE-9F8B-73C83C047122&phoneid=032330673013&version=1.21&build=248&executable=Mobile Alerts&bundle=de.synertronixx.remotemonitor&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=1&timestamp=1453237425&requesttoken=07436acf2dce9a096aef931736865952&deviceids=083877BD9DF1,&measurementfroms=,0,0,0,0,0,&measurementcounts=,50,50,50,50,50,
     header     Content-Type: application/x-www-form-urlencoded
     ignoreredirects 0
     retryCount 0
     type       Update
     url        http://23.97.212.128:8080/api/v1/dashboard
   Helper:
     _98_statistics Regen_Statistik
   Sslargs:
Attributes:
   icon       temp_outside
   reading01Name TEMP
   reading01Regex "t1": (\d?\d.\d)
   reading02Name REGENMENGE
   reading02Regex "r": (\d?\d.\d)
   requestData devicetoken=c469a2c5-2f82464f-a73969cc-e1e3bf15-2eb7db2b-2b2cc4fb-a87fd82a-f596ab77&vendorid=3D3BCADD-79C6-4AEE-9F8B-73C83C047122&phoneid=032330673013&version=1.21&build=248&executable=Mobile Alerts&bundle=de.synertronixx.remotemonitor&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=1&timestamp=1453237425&requesttoken=07436acf2dce9a096aef931736865952&deviceids=083877BD9DF1,&measurementfroms=,0,0,0,0,0,&measurementcounts=,50,50,50,50,50,
   requestHeader1 Content-Type: application/x-www-form-urlencoded
   room       Temperatur und Luftfeuchtigkeit,all
   stateFormat {sprintf("%.1f Grad, Regenmenge %.1f mm", ReadingsVal($name,"TEMP",0), ReadingsVal($name,"REGENMENGE",0))}
   userattr   event-on-change-reading icon reading01Name reading01Regex reading02Name reading02Regex requestData requestHeader1 stateFormat


Wie habe ich jetzt die neu angelegten Readings zu deuten (ich habe diese als Screenshot angehängt):
- Wie unterscheidet sich "statREGENMENGE" von "statREGENMENGELast"?
- Was sagt "statREGENMENGESpecialPeriod" aus? Hier steht als Wert aktuell "0 (2.hours)". Als ein Attribut hatte ich ja "specialDeltaPeriodHours" mit 6 definiert.

Ohjeeehhh, ich habe das Gefühl, das ist für mich ein Fass ohne Boden...
Ich dachte, dass ICH die Aufgabe lösen kann...?!?

Grüße
Jens

Icinger

Hi,

das sieht ja schon mal ganz gut aus.

statREGENMENGE (ohne "last") ist immer das aktuellste.

statREGENMENGELast ist die vergangene Periode, also zB die letzte Stunde, der letzte Tag usw.
Diese Werte sind sehr gut für Log-Aufzeichnungen.

SpecialPeriod scheint jetzt mal auf 6 Stunden hochzuzählen.
um 15:59 hattest du noch -->  statREGENMENGESpecialPeriod 0 (1.hours)
um 16:59 hattest du dann -->  statREGENMENGESpecialPeriod 0 (2.hours)

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

josburg

Hallo Icinger,

nochmals vielen Dank...!
Bedeutet, dass ich mit

SENSOR_REGENSENSOR.statREGENMENGESpecialPeriod

auf die Regenmenge der letzten 6 Stunden zugreifen kann (für mein Beispiel erhöhe ich das dann noch auf 12 Stunden.

Jetzt hoffentlich die letzte Frage aller Fragen:
Die Bewässerungsthematik steuere ich aktuell mit folgendem DOIF (und so funktioniert diese bisher auch gut - nur eben ohne, dass die Regenmenge beachtet wird):

define TESTSCHALTER DOIF ([21:00-21:10] and [SENSOR_HUETTE:TEMP] > 13.0 and [SENSOR_WINDGESCHWINDIGKEIT:WINDGESCHWINDIGKEIT] < 4.0 and [SENSOR_WINDGESCHWINDIGKEIT:BÖE] < 6.0) (set SCHALTER_STECKDOSE_ZISTERNE on-for-timer 1200) DOELSE (set SCHALTER_STECKDOSE_ZISTERNE off)


Erweitert müsste das DOIF dann folgendermaßen funktionieren (tut es aber leider nicht):

define TESTSCHALTER DOIF ([21:00-21:10] and [SENSOR_REGENSENSOR.statREGENMENGESpecialPeriod] < 10 and [SENSOR_HUETTE:TEMP] > 13.0 and [SENSOR_WINDGESCHWINDIGKEIT:WINDGESCHWINDIGKEIT] < 4.0 and [SENSOR_WINDGESCHWINDIGKEIT:BÖE] < 6.0) (set SCHALTER_STECKDOSE_ZISTERNE on-for-timer 1200) DOELSE (set SCHALTER_STECKDOSE_ZISTERNE off)


...die Uhrzeiten habe ich beim Test natürlich entsprechend auf die aktuelle Uhrzeit angepasst.
Irgendetwas scheint bei dieser Abfrage noch nicht zu passen:
[SENSOR_REGENSENSOR.statREGENMENGESpecialPeriod] < 10

:o :'(


Icinger

ZitatIrgendetwas scheint bei dieser Abfrage noch nicht zu passen

Öhm, ja, und was soll wieso nicht passen?
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

josburg

Die Regenmenge

statREGENMENGESpecialPeriod  0 (2.hours)

ist ja aktuell <10, aber das DOIF springt in den DOELSE-Zweig, obwohl ja alle Bedingungen erfüllt sein müssten.

Nämlich Temp > 13 Grad, Windgeschwindigkeit < 4 m/s und Windböe < 6 m/s
und Regenmenge < 10 mm

Ich wäre also davon ausggangen, dass die Bedingung wahr ist und der Befehl
set SCHALTER_STECKDOSE_ZISTERNE on-for-timer 1200
ausgeführt wird.


josburg

Hallo,

wenn ich das DOIF folgendermaßen definiere

define TESTSCHALTER DOIF ([21:00-21:10] and [SENSOR_REGENSENSOR:statREGENMENGESpecialPeriod] > 10 .......) (<BEFEHL>) DOELSE (<BEDINGUNG>) (<BEFEHL>)

erhalte ich im FHEM-Log folgende Fehlermeldung:

2016.03.28 20:47:17 1: PERL WARNING: Argument "0 (5.hours)" isn't numeric in numeric lt (<) at (eval 2626) line 1.


Inhaltlich ist mir das soweit klar, da der Wert "0 (5.hours)" nicht numerisch ist und damit nicht mit "> 10" verglichen werden kann.
Ich dachte, dass lediglich die "0" als Wert verwendet wird.

Wie muss ich das DOIF definieren, dass zunächst aus dem String "0 (5.hours)" die "0" extrahiert wird?

Nochmals danke für Eure Hilfe.

Viele Grüße
Jens




Damian

Zitat von: josburg am 28 März 2016, 21:09:38
Hallo,

wenn ich das DOIF folgendermaßen definiere

define TESTSCHALTER DOIF ([21:00-21:10] and [SENSOR_REGENSENSOR:statREGENMENGESpecialPeriod] > 10 .......) (<BEFEHL>) DOELSE (<BEDINGUNG>) (<BEFEHL>)

erhalte ich im FHEM-Log folgende Fehlermeldung:

2016.03.28 20:47:17 1: PERL WARNING: Argument "0 (5.hours)" isn't numeric in numeric lt (<) at (eval 2626) line 1.


Inhaltlich ist mir das soweit klar, da der Wert "0 (5.hours)" nicht numerisch ist und damit nicht mit "> 10" verglichen werden kann.
Ich dachte, dass lediglich die "0" als Wert verwendet wird.

Wie muss ich das DOIF definieren, dass zunächst aus dem String "0 (5.hours)" die "0" extrahiert wird?

Nochmals danke für Eure Hilfe.

Viele Grüße
Jens

[SENSOR_REGENSENSOR:statREGENMENGESpecialPeriod:d]

http://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

josburg

Super, vielen Dank Euch allen - jetzt funktioniert meine Steuerung komplett...  8) :o :)

Ich setze den Thread auf gelöst.

wibi_

Servus Jens,

sorry, war über die Feiertage "offline". Da Du das Thema aber mittlerweile mit statistics gelöst hast, gehe ich davon aus, dass Du die Version mit den dummys nicht mehr brauchst.

Viel Erfolg mit Deiner Bewässerung!

Gruß Harry
RPI4, RPI3, RPI2, CULV3_HM, CULV3_FS20, CULV3_RFR, ZWave, 1-Wire, ESPEasy, Signalduino

josburg

Zitat von: wibi_ am 29 März 2016, 20:25:20
Servus Jens,

sorry, war über die Feiertage "offline". Da Du das Thema aber mittlerweile mit statistics gelöst hast, gehe ich davon aus, dass Du die Version mit den dummys nicht mehr brauchst.

Viel Erfolg mit Deiner Bewässerung!

Gruß Harry

Hallo Harry,

trotzdem vielen Dank, dass Du Dich gemeldet hast.
Bei mir funktioniert jetzt zum Glück alles - der Frühling kann kommen :-)

Grüße
Jens


tupol

Ich glaube, das neue Attribut specialDeltaPeriod ist hier auch interessant. Es ermöglicht mehrere Zeiträume zu erfassen. Ich nutze es für genau diesen Anwendungsfall.

Die Auswertung lässt sich aber etwas übersichtlicher in einem Perl-Script umsetzen.

Bartimaus

Zitat von: Prof. Dr. Peter Henning am 27 März 2016, 21:23:12
Ich habe aus einem funkbasierten Regensensor der WS2800 Wetterstation die Elektronik herausgeworfen. Der Magnet in der Schaltwippe steuert jetzt via Reed-Kontakt einen 1-Wire Counter DS2423. Der liefert mir die Regenmenge der letzten Summationsperiode (sagen wir 1 h), des gesamten Tages - und natürlich gibt es auch eine Option, den Vortrag mit einzubeziehen. Monatliches und Jährliches Logging ebenfalls problemlos.

Die vorhergesagte Regenmenge würde ich niemals verwenden - das ist zu ungenau. Stattdessen lieber die Bodenfeuchte messen und nachgießen, wenn nicht genug gefallen ist.

LG
pah


Moin,

das ist eine coole Idee. Habe noch einen Anschluss am DS2423 frei, und auch einen Regensensor hier rumfliegen.
https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQfgBD1piPpgzs5KHYqdCB1AoVGUtW8v4HxU60lm-D2FZXx80oO

Die Bordelektronik lässt sich herausziehen, es besteht keine mechanische Verbindung zur Wippe.

Hast Du mal ein Bild von Deinem Umbau ? Wie hast Du den Reed-Kontakt angebracht/befestigt ?
Und last but not least, verwendest die die absoluten Counts der Wippe oder hast Du das ausgelitert und in eine Formel gebracht (wovon ich ausgehe  ;D )

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Prof. Dr. Peter Henning

Bilder habe ich damals nicht gemacht - und derzeit regnet es, so dass ich sie auch jetzt nicht machen werde. Gerade baue ich noch den Windsensor der WS2800 um - sehr trickreich, wegen der Richtungsanzeige. Da mach eich Fotos, und irgendwann bei wärmerem Wetter hole dich das vlt. auch noch für den Regensensor nach.

Also ganz einfach: Reedkontakt mit Heißkleber direkt an der Trennwand zur Wippe befestigen - eben dort, wo der Reedkontakt der Vorgängerelektronik war. Parallel mit 22 nF Kondensator an den Zähler anschließen, Widerstand 4,7 k zur +-Leitung. Eichung, indem man mit einer Injektionsspritze 10 ml Wasser einfüllt. Ergibt für den WS2800-Sensor einen Impuls je 0,5 mm = 0,5 l/m³ Regenmenge.

define A.OWB.rain OWCOUNT DS2423 112233440002
attr A.OWB.rain AFactor 0.5
attr A.OWB.rain AMode daily
attr A.OWB.rain AName today
attr A.OWB.rain ARate rate
attr A.OWB.rain AUnit mm
attr A.OWB.rain BFactor 0.5
attr A.OWB.rain BName total
attr A.OWB.rain BUnit mm
attr A.OWB.rain IODev OWX_OG
attr A.OWB.rain group climateSensor
attr A.OWB.rain model DS2423eold
attr A.OWB.rain nomemory 1
attr A.OWB.rain room Aussenbereich
attr A.OWB.rain stateFormat today mm (rate.av mm/h)
attr A.OWB.rain userReadings rate.av {movingAverage("A.OWB.rain","rate",1800)}, yesterday:none {}, twodays {ReadingsVal("A.OWB.rain","today",0)+ReadingsVal("A.OWB.rain","yesterday",0)}


Das eine userReading rate.av sorgt für die Berechnung des gleitenden Durchschnitts der gegenwärtigen Regenmenge in mm/h - hier über 1800 Sekunden, also 30 Minuten.

Um 23:57 an jedem Tag wird durch einen externen Timer der gegenwärtige Tageswert rain in das userReading yesterday kopiert - so dass das dritte userReading twodays jeweils die Summe über den heutigen und den vorigen Tag enthält.

LG

pah

Bartimaus

Danke für die ausführliche Erklärung.
Mal sehen, ob das bei meinem mit dem Reed/Heisskleber auch klappt. Am besten wäre natürlich, wenn ich die Bordelektronik drin lassen könnte, damit die bisherige Funktionalität erhalten bleibt.


Auf die Ergebnisse des Windsensors bin ich auch gespannt, den habe ich nämlich auch  ;D
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly