Telegram & mehrere Bedingungen

Begonnen von rhoffm34, 12 Oktober 2018, 23:11:04

Vorheriges Thema - Nächstes Thema

Vaddi

So geht es natürlich auch und da merke ich wieder, dass ich zu kompliziert gedacht habe und noch viel lernen muss, was fhem angeht ;)
Eine Frage habe ich da noch. Wofür das userattr warnLevel? Reicht da nicht das userReading?
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

CoolTux

Guten Morgen,

Das userattr ersetzt die Dummys, es sollte ja anscheinend flexibel Grenzwerte angegeben werden dürfen. Ist dem nicht so kann man das weg lassen und den Grenzwert direkt in der userReadings Bedingung mit einbauen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Manche Sensortypen (z.B. DS18B20) erlauben auch einen alarm auf hw-Ebene.


Oder du machst die ganze Auswertung z.b. im notify mit Perl. Dazu könntest du mal nach Bennis globalem Tür- und Fenster-offen code suchen.


Ob aber diese [size=78%]Art der Alarmierung.Sinn macht, ist.eine andere Frage. So was sieht man auch gut in Diagrammen.[/size]
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

rhoffm34

ZitatBrauchwasser
Hzg_Vorlauf
Hzg_Vorlauf

Alle drei bekommen ein userattr warnLevel. Dieses zusätzliche Attribut  wird dann in allen drei Devices gesetzt.
Danach wird in allen drei Devices ein userReading angelegt. Z.b. vorlaufTemp wo du dann high oder low rein schreiben lässt je nach deine Schwelle.
Und DAS triggerst Du dann mit einem Notify.

Guten Morgen. Ich versuche gerade die Lösung von CoolTux umzusetzen...

userattr warnLevel habe ich verstanden und wurde auf 52 gesetzt:

Internals:
   DEF        28-0516707019ff
   NAME       Brauchwasser
   NR         103
   NTFY_ORDER 50-Brauchwasser
   STATE      T: 53.937
   TYPE       GPIO4
   READINGS:
     2017-03-29 19:16:05   H               0
     2018-10-10 15:17:13   failures        0
     2017-03-29 19:16:05   humidity        0
     2018-10-13 10:11:44   state           T: 53.937
     2018-10-13 10:11:44   temperature     53.937
     2018-10-13 10:08:26   temperatureMA   53.447
   fhem:
     interfaces temperature
   helper:
     history:
       ARRAY(0x42ae128)
       ARRAY(0x423fbe0)
       ARRAY(0x444bf78)
       ARRAY(0x423eb20)
       ARRAY(0x42f3068)
       ARRAY(0x41eacb0)
       ARRAY(0x42f2f00)
       ARRAY(0x43aa280)
       ARRAY(0x41132f0)
       ARRAY(0x44c8500)
       ARRAY(0x43433c8)
       ARRAY(0x466e2d8)
       ARRAY(0x42e6510)
       ARRAY(0x3f3af48)
       ARRAY(0x424ece8)
       ARRAY(0x464ef30)
       ARRAY(0x44c6520)
       ARRAY(0x45da740)
       ARRAY(0x42c3450)
       ARRAY(0x42c43e8)
       ARRAY(0x423f150)
       ARRAY(0x4450b88)
       ARRAY(0x44d9d30)
       ARRAY(0x4505f38)
       ARRAY(0x44c5f50)
Attributes:
   DbLogInclude temperatur,temperatureMA
   event-min-interval 120
   group      1-wire
   model      DS18B20
   room       Central Heating,GPIO-Devices
   userReadings Brauchwasser
   userattr   warnLevel
   warnLevel  52


Jetzt stehe ich bei dem userReading aber auf dem Schlauch.

ZitatZ.b. vorlaufTemp wo du dann high oder low rein schreiben lässt je nach deine Schwelle.
Und DAS triggerst Du dann mit einem Notify.

Sorry, ich habe mich mit userReadings noch nicht beschäftigt... wie gehts weiter?

CoolTux

Zitat von: rhoffm34 am 13 Oktober 2018, 10:14:59
Guten Morgen. Ich versuche gerade die Lösung von CoolTux umzusetzen...
Jetzt stehe ich bei dem userReading aber auf dem Schlauch.

Sorry, ich habe mich mit userReadings noch nicht beschäftigt... wie gehts weiter?

Dann wäre jetzt doch ein guter Zeitpunkt  ;D



attr Brauchwasser userReadings brauchwasserTemp:temperature:.* { if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) ) { 'low' } elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0)) { 'high'} }


Das ist nur ein Beispiel. Wie Du siehst hast Du nur eine Schwelle und wenn die Temp gerne mal schwankt um die Schwelle hast Du ständig low und high. Hier musst Du nun schauen. Überlege was man machen kann. Kleiner Tip, zwei Schwellen wären gut  ;)



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Oder je einen THRESHOLD einrichten; da ist gleich eine Hysterese vorgesehen.
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

rhoffm34

Über threshold habe ich auch schon nachgedacht.

CoolTux, wenn ich Deine Lösung per Copy Paste kopiere kommt folgende Fehlermeldung:


Error evaluating Brauchwasser userReading WarningLowTemp: syntax error at (eval 616098) line 1, near ") <" syntax error at (eval 616098) line 1, near "}}"

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rhoffm34

Internals:
   DEF        28-0516707019ff
   NAME       Brauchwasser
   NR         103
   NTFY_ORDER 50-Brauchwasser
   STATE      T: 51.375
   TYPE       GPIO4
   READINGS:
     2017-03-29 19:16:05   H               0
     2018-10-13 11:03:20   WarningLowTemp  Error evaluating Brauchwasser userReading WarningLowTemp: syntax error at (eval 616098) line 1, near ") <"
syntax error at (eval 616098) line 1, near "}}"

     2018-10-10 15:17:13   failures        0
     2017-03-29 19:16:05   humidity        0
     2018-10-13 12:24:41   state           T: 51.375
     2018-10-13 12:24:41   temperature     51.375
     2018-10-13 10:08:26   temperatureMA   53.447
   fhem:
     interfaces temperature
   helper:
     history:
       ARRAY(0x42ae128)
       ARRAY(0x423fbe0)
       ARRAY(0x444bf78)
       ARRAY(0x423eb20)
       ARRAY(0x42f3068)
       ARRAY(0x41eacb0)
       ARRAY(0x42f2f00)
       ARRAY(0x43aa280)
       ARRAY(0x41132f0)
       ARRAY(0x44c8500)
       ARRAY(0x43433c8)
       ARRAY(0x466e2d8)
       ARRAY(0x42e6510)
       ARRAY(0x3f3af48)
       ARRAY(0x424ece8)
       ARRAY(0x464ef30)
       ARRAY(0x44c6520)
       ARRAY(0x45da740)
       ARRAY(0x42c3450)
       ARRAY(0x42c43e8)
       ARRAY(0x423f150)
       ARRAY(0x4450b88)
       ARRAY(0x44d9d30)
       ARRAY(0x4505f38)
       ARRAY(0x44c5f50)
Attributes:
   DbLogInclude temperatur,temperatureMA
   event-min-interval 120
   group      1-wire
   model      DS18B20
   room       Central Heating,GPIO-Devices
   userReadings attr Brauchwasser userReadings brauchwasserTemp:temperature:.*
{ if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) )
{ 'low' }
elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0))
{ 'high'} }
   userattr   warnLevel
   warnLevel  52

CoolTux

userReadings attr Brauchwasser userReadings brauchwasserTemp:temperature:.*
{ if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) )
{ 'low' }
elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0))
{ 'high'} }


Bitte lese wenigstens kurz über userReadings

So kann das nichts werden. Gehe über FHEMWEB in die Detailansicht des Devices und drücke auf das Attribut userReadings, sollte ja schon da stehen. Etwas weiter oben unter attr steht nun der Text den Du editieren kannst. Dort schreibst Du nur rein

brauchwasserTemp:temperature:.* { if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) ) { 'low' } elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0)) { 'high'} }

im list des Devices muss es dann so aussehen


userReadings brauchwasserTemp:temperature:.* { if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) ) { 'low' } elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0)) { 'high'} }
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rhoffm34

#25
Internals:
   DEF        28-0516707019ff
   NAME       Brauchwasser
   NR         103
   NTFY_ORDER 50-Brauchwasser
   STATE      T: 51.062
   TYPE       GPIO4
   READINGS:
     2017-03-29 19:16:05   H               0
     2018-10-13 11:03:20   WarningLowTemp  Error evaluating Brauchwasser userReading WarningLowTemp: syntax error at (eval 616098) line 1, near ") <"
syntax error at (eval 616098) line 1, near "}}"

     2018-10-13 12:41:25   brauchwasserTemp low
     2018-10-10 15:17:13   failures        0
     2017-03-29 19:16:05   humidity        0
     2018-10-13 12:41:25   state           T: 51.062
     2018-10-13 12:41:25   temperature     51.062
     2018-10-13 10:08:26   temperatureMA   53.447
   fhem:
     interfaces temperature
   helper:
     history:
       ARRAY(0x42ae128)
       ARRAY(0x423fbe0)
       ARRAY(0x444bf78)
       ARRAY(0x423eb20)
       ARRAY(0x42f3068)
       ARRAY(0x41eacb0)
       ARRAY(0x42f2f00)
       ARRAY(0x43aa280)
       ARRAY(0x41132f0)
       ARRAY(0x44c8500)
       ARRAY(0x43433c8)
       ARRAY(0x466e2d8)
       ARRAY(0x42e6510)
       ARRAY(0x3f3af48)
       ARRAY(0x424ece8)
       ARRAY(0x464ef30)
       ARRAY(0x44c6520)
       ARRAY(0x45da740)
       ARRAY(0x42c3450)
       ARRAY(0x42c43e8)
       ARRAY(0x423f150)
       ARRAY(0x4450b88)
       ARRAY(0x44d9d30)
       ARRAY(0x4505f38)
       ARRAY(0x44c5f50)
Attributes:
   DbLogInclude temperatur,temperatureMA
   event-min-interval 120
   group      1-wire
   model      DS18B20
   room       Central Heating,GPIO-Devices
   userReadings brauchwasserTemp:temperature:.* { if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) ) { 'low' } elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0)) { 'high'} }
   userattr   warnLevel
   warnLevel  52


Das hatte ich vorher auch so gemacht. Ich habe mir das im Editor nur anders zurecht gelegt... dann habe ich eine bessere Übersicht. Jetzt ist es so wie Du geschrieben hast, aber der Fehler ist immer noch da.

CoolTux

Was für ein Editor? Schreib bitte alles eins zu eins von Hand in das Attribut Fenster. Ich habe es bei mir im Testsystem eingefügt und mein Reading wird ohne Fehler geschrieben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


Internals:
   CFGFN     
   NAME       Brauchwasser
   NR         202
   STATE      ???
   TYPE       dummy
   READINGS:
     2018-10-13 12:55:50   brauchwasserTemp low
     2018-10-13 12:55:50   temperature     50
Attributes:
   readingList temperature
   room       Test
   setList    temperature
   userReadings brauchwasserTemp:temperature:.* { if( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0) ) { 'low' } elsif( ReadingsVal($name,'temperature',0) < AttrVal($name,'warnLevel',0)) { 'high'} }
   userattr   warnLevel
   warnLevel  65
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rhoffm34

Ich glaube ich bin heute ein bisschen langsam...

Du meinst doch hier "A" (im Screenshot)

Und "B" ist der Editor den ich meine...

CoolTux

ja, ist doch super. geht doch. weiß gar nicht was du hast.

Schau mal gaaaanz genau hin wie dein userReading heist und was hinter diesem Reading in der Readingliste also da wo alle Readings und ihre Werte stehen drin steht als Wert. Dann erkennst Du Dein "Problem"
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net