Status von Dummy-Device per Pushover senden

Begonnen von C0mmanda, 29 Juli 2015, 22:14:41

Vorheriges Thema - Nächstes Thema

C0mmanda

Hallo,

eine vermeintlich einfache Aufgabe beschäftigt mich jetzt schon seit Stunden und ich finde einfach keine Lösung...

Im Zuge meiner Rolladensteuerung habe ich mich mit Sonnenauf- und untergang beschäftigt.
Jetzt dachte ich mir es wäre ganz nett mir diese Werte jeden morgen per Pushover zu schicken, sobald meine Temperatur-Sensoren angebracht und eingerichtet sind dann auch mit aktueller Temperatur.

Aber zunächst soll es nur der Sonnenauf- und untergang sein.

Ich habe die Werte folgendermaßen ins fhem gebracht:


define Sonnenaufgang dummy
attr Sonnenaufgang group Wetter

define Sonnenuntergang dummy
attr Sonnenuntergang group Wetter

define Sun_RiseSet_Timer at *00:01:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }


Funktioniert auch wunderbar und wird mir angezeigt wie es soll.
Nur, wie baue ich daraus jetzt eine Pushover-Nachricht?

define SonnenaufabPushover at *21:54:00 {

und weiter?

Wäre super wenn mir jemand helfen könnte...

Hollo

Ich habe kein Pushover, aber irgendwie verstehe ich den Sinn noch nicht...

- Wenn Du das abends um 21:54 Uhr machst, hast Du noch keine Werte
- Wenn Du das morgens machst, siehst Du neben dem Blick auf's Handy auch so, ob es schon hell ist oder nicht  ;)

Aber zum Thema...
Du brauchst halt eine Pushover-Funktion, die Du dann per at morgens aufrufst, und die Dir dann die entsprechenden Werte übermittelt.
Sinngemäß:
define SonnenaufabPushover at *07:00:00 {PushInfo('Heute wird es um $Sonnenaufgang hell und um $Sonnenuntergang wieder dunkel')}
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

C0mmanda

Erstmal danke für die Rückmeldung.
Die Uhrzeit 21:54 ist natürlich zu Testzwecken eingegeben um die Push-Notification zu testen.
Die Push selbst hat nur den Sinn mich zu informieren da fhem die Werte halt bereithält.
Dies soll, wenn es dann funktioniert, morgens um 7uhr geschehen. (Also später dann at *07:00 { )

Wie der Sonnenauf- und Untergang in fhem definiert ist steht ja bereits oben.
Der Syntax für Pushover ist: set <device> Pushover msg 'Titel' 'Nachricht'.

Mein Problem ist jetzt nur fhem dazu zu bringen mir im Nachrichtentext die Werte der Dummies Sonnenaufgang und Sonnenuntergang auszugeben.
Daran verzweifle ich im moment und kriege es einfach nicht hin. Stehe da momentan völlig auf dem Schlauch und würde Hilfe brauchen...

CoolTux

define SonnenaufabPushover at *07:00:00 {PushInfo('Heute wird es um $Sonnenaufgang hell und um $Sonnenuntergang wieder dunkel')}

99_myUtils_PushInfo

sub PushInfo
{
      my $Sonnenaufgang=Value(Sonnenaufgang)
      my $Sonnenuntergang=Value(Sonnenuntergang)
      return ($Sonnenaufgang,$Sonnenuntergang)
}

Dies dient nur der Anschauung. Stichwort 99_myUtils. Der Code stimmt imho so nicht ganz. Also bitte etwas Recherge.


Gruß
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

Alveole

Hallo!
genau dieses Thema intessiert mich auch brennend!
Ich würde mir auch gern Werte (bei mir Druckwerte)  gern per notify gesteuert über Pushover zukommen lassen.

Gibt's hier schon weitere Fortschritte und Erkenntnisse?

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

Alveole

Nur wie?
Eine Datei wie 99_xxxx anzulegen oder gar zu ändern Trau ich mir noch nicht wirklich. Dafür hab ich zu wenig Programmierkenntnisse darin.
@CoolTux: du hattest eine paar codezeilen vorgeschlagen. Klar muss ich die an meinen Drucksensor anpassen, aber Du schriebst auch, das es nur zur Anschauung ist.
Was muss denn da anderes?

Danke!

CoolTux

Schreibe mal bitte genau Deine Anforderungen.
Du möchtest also eine Pushovernachricht schicken und darin soll ein Wert von einem Device stehen. Richtig?
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

Alveole

Hallo!
Ja!
Ich möchte einen Wert (per KNX ausgelesen - DruckHeizung) mir per Pushover senden.
Sollte der Druck unter eine Grenze fallen, bekomme ich jetzt schon eine Nachricht (per notify). Nun hätte ich gern noch den Wert mit übermittelt.
aktuell so
set pushmsg msg 'Heizung' 'Druck zu niedrig'

Danke!

CoolTux

Dann musst Du Dein Notify mit Perlcode erweitern. Du musst das Reading wo Du den Wert von haben möchtest auslesen.


define notifyname notify Druckleitung:pressure.* {
               $pvalue = ReadingsVal("Druckleitung "," pressure","34");

               fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig, der Druck beträgt $pvalue'";

}


Der Code soll nicht eins zu eins übernommen werden. Bitte informiere Dich was hier genau passiert.



Gruß
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

Alveole

Danke für den Gedankenanstoß. Aber so richtig wills nicht funktionieren.
Fehler: unter anderem "unknown command if"

define alarm_heiz_druck notify Heiz_druck {$pvalue = ReadingsVal("Heiz_druck","state","");  if (ReadingsVal("Heiz_druck","state","") < 1) {fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig. Druck: $pvalue'"}}


da die if Bedingung an sonsten einzeln
define alarm_heiz_druck notify Heiz_druck {if (ReadingsVal("Heiz_druck","state","") < 1) {fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig'"}}
funktioniert, muss es wohl an der Kombination liegen.
oder an der Kombi Perl/fhem Kommando.

Danke!

PS: ich muss immer den gesamten String in einen Zeile schreiben. So aufgeteilt auf mehrere Zeile der Übersicht halber nimmt er nicht. ?

CoolTux

Bitte ganz dringend lesen!!!
http://www.fhemwiki.de/wiki/Notify#Regexp_wizard_-_FHEMWEB-unterst.C3.BCtzte_Anlage_eines_notify

Mache zu erst ein define Deines Notifys in vereinfachter Form


define alarm_heiz_druck notify Heiz_druck test


Dann gehst Du auf das Internals DEF und kannst nun hier in Ruhe editieren, und zwar auch so das es übersichtlich ist in mehreren Zeilen


define alarm_heiz_druck notify Heiz_druck:.* {
                                                             $pvalue = ReadingsVal("Heiz_druck","state","");
                                                             if (ReadingsVal("Heiz_druck","state","") < 1) {
                                                                    fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig. Druck: $pvalue'";
                                                             }
                                        }




Grüße
Leon
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

Alveole

so,
den Link kante ich wirlich noch nicht! Asche auf mein Haupt!

Nun kommt zwar kein Fehler mehr bei start, dafür beim auslösen des notify
Zitatalarm_heiz_druck return value: Global symbol "$pvalue" requires explicit package name

google ergab, das ich das noch in 99_??? definieren muss? hä?
das ist doch eine Variable, die ich nur lokal verwenden will und nicht übergeben

Alveole

ich habs!

define alarm_heiz_druck notify Heiz_druck {\
  my $heizdruck = ReadingsVal("Heiz_druck","state","");;\
  if ($heizdruck < 1.1)\
   {fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig. Druck: $heizdruck bar'";;}\
}


Danke für die Hilfe und Gedankeanstöße!!!

CoolTux

Bitte gern geschehen. Das mit 99_myUtils ist so eine Sache. Es heißt alles was länger wie 1 Zeile Perlcode ist sollte für ein Notify ausgelagert werden. Das macht man in einer eigenen Moduldatei. Ist ne Politische Entscheidung. Musst Du selber wissen.


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