Einen Dummy über einen Grenzwert schalten

Begonnen von Stargazer, 08 August 2016, 15:33:13

Vorheriges Thema - Nächstes Thema

Stargazer

#30
Hi,

ich hatte den zweiten Code von dir eingeben. Nun ist der Kontakt zum Windmesser weider aufgebaut.
Grenzwert liegt bei 1.0 und wir haben 2,2 m/s. Doch der dummy "Sturmwarnung" geht nicht an (hatte ich natürlich im DEF dahin unbenannt. Auch ein Grenzwert von 1,0 brachte nichts...

Code sieht derzeit so aus:

define Sturmwarnung dummy
attr Sturmwarnung devStateIcon on:weather_wind off:vent_ventilation_level_0
attr Sturmwarnung room Wetter
define Sturmwarnung_Antaris notify Wetterstation:Windgeschwindigkeit.* {my $reading = $EVTPART1;; $reading =~ s/,/./;; $reading = $reading*1;; if($reading > 1,0){fhem("set Sturmwarnung on")} else {fhem("set Sturmwarnung off")}}
attr Sturmwarnung_Antaris userattr interval
attr Sturmwarnung_Antaris interval 120
attr Sturmwarnung_Antaris room Wetter


Viele Grüße

André


DeeSPe

Zitat von: Stargazer am 09 August 2016, 19:45:07
Hi,

ich hatte den zweiten Code von dir eingeben. Nun ist der Kontakt zum Windmesser weider aufgebaut.
Grenzwert liegt bei 1.0 und wir haben 2,2 m/s. Doch der dummy "Sturmwarnung" geht nicht an (hatte ich natürlich im DEF dahin unbenannt. Auch ein Grenzwert von 1,0 brachte nichts...

Code sieht derzeit so aus:

define Sturmwarnung dummy
attr Sturmwarnung devStateIcon on:weather_wind off:vent_ventilation_level_0
attr Sturmwarnung room Wetter
define Sturmwarnung_Antaris notify Wetterstation:Windgeschwindigkeit.* {my $reading = $EVTPART1;; $reading =~ s/,/./;; $reading = $reading*1;; if($reading > 1,0){fhem("set Sturmwarnung on")} else {fhem("set Sturmwarnung off")}}
attr Sturmwarnung_Antaris userattr interval
attr Sturmwarnung_Antaris interval 120
attr Sturmwarnung_Antaris room Wetter


Viele Grüße

André

Wie gesagt, Rechnen (und auch Vergleichen) geht nur mit Punkt statt Komma, und deswegen ja auch die Substitution.
Also:
define Sturmwarnung_Antaris notify Wetterstation:Windgeschwindigkeit.* {my $reading = $EVTPART1;; $reading =~ s/,/./;; $reading = $reading*1;; if($reading > 1.0){fhem("set Sturmwarnung on")} else {fhem("set Sturmwarnung off")}}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hi Dan,

das mit den 1.0 hatte ich als erstes versucht. Funktionierte jedoch nicht. Da hab ich es einfach nochmal mit 1,0 versucht.
Leuchtet mir jetzt aber auch ein, dass das nicht gehen konnte.
Habe das jetzt wieder auf 1.0 geändert.

Doch leider springt der Dummy nicht auf on, obwohl 1,6 m/s.. .

Ist komisch, da es doch so mit der Zeile plausibel sein sollte.

Viele Grüße

André

DeeSPe

Dann gib doch zwischendrin mal die Variable im Log oder Sonstwo aus um zu sehen was wirklich drin steht. Am Besten einmal vor der Substitution und einmal danach. Ich kann hier auch nur im Dunkeln tappen...
Und trigger einfach mal das Reading manuell damit Du nicht immer warten musst bis sich das Reading ändert.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hi Dan,

ich kann leider den Wert der Windgeschwindigkeit nicht manuell ändern und dadurch das Notify so checken. Ich arbeite da mit dem Schaltwert des Notify, wo ich das Define anklicke und anschließend wieder übernehme. Hab ein LOG angelegt und mit Sturmwarnung_Antaris mit verbose 5 da reinschreiben lassen. Zuerst mit dem alten Befehlssatz, dann mit dem neuen. Heraus kam nur folgendes:

2016-08-09_21:40:08 Sturmwarnung_Antaris active
2016-08-09_21:55:37 Sturmwarnung_Antaris active

Ist klar, da er ja das DEF neu einliest.

Man o man....da kann man bei mir von Schwarzen Wissenslöchern aber gar nicht erst reden... :o ??? .

Viele Grüße

André

DeeSPe

Zitat von: Stargazer am 09 August 2016, 22:02:26
Hi Dan,

ich kann leider den Wert der Windgeschwindigkeit nicht manuell ändern und dadurch das Notify so checken. Ich arbeite da mit dem Schaltwert des Notify, wo ich das Define anklicke und anschließend wieder übernehme. Hab ein LOG angelegt und mit Sturmwarnung_Antaris mit verbose 5 da reinschreiben lassen. Zuerst mit dem alten Befehlssatz, dann mit dem neuen. Heraus kam nur folgendes:

2016-08-09_21:40:08 Sturmwarnung_Antaris active
2016-08-09_21:55:37 Sturmwarnung_Antaris active

Ist klar, da er ja das DEF neu einliest.

Man o man....da kann man bei mir von Schwarzen Wissenslöchern aber gar nicht erst reden... :o ??? .

Viele Grüße

André

Klar kannst Du das Reading manuell ändern:
setreading Windturbine Gemittelte_Leistung WERT
Wobei Windturbine, Gemittelte_Leistung und WERT durch entsprechende Werte zu ersetzen sind.

Schau doch einfach mal ins Wiki, da gibt es ein PDF wo das alles erklärt ist.  8)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hi Dan,

ich habe den setreading - Befehl bei der HTTPMOD Abfrage der Wetterstation versucht auszuführen, was aber nicht gefruchtet hat.
Langsam denke ich, dass der Schuh in diesem Fall (noch) zu groß für mich ist. Da könnte ich mich über mich selber gerade ärgern.

In meinem Fall wollte ich über den ermittelten Grenzwert der Windgeschwindigkeit, die Anlage aus dem Wind schalten. Das macht dann eine Bremse die über diese Befehlssequenz angesteuert würde.
Das wäre bei schwerem Sturm bis Orkan der Fall, da sonst die 22m² Rotorfläche auf einem 24m Masten doch zu Unruhig würden und dadurch nicht mehr viel  Energie kommt. Es würde zwar nix passieren, aber man könnte da das Material etwas schonen.

Das nur so am Rande.

Vielleicht sollte ich das irgendwie Anhand eines Klartext-readings eines Devices versuchen. Muss da nur noch überlegen, wie ?

Viele Grüße und vielen Dank...

André

DeeSPe

Ich kann Deine Aufregung und Ideenreichtum total verstehen, bei mir sprundeln auch fast täglich wieder neue Ideen ein.
ABER: Mache Dich ganz dringend mit den Basics von FHEM und Perl vertraut, umso mehr Freude hast Du auch selber daran.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hi Dan,

nochmals ein GROßES DANKESCHÖN an dich, dass du mir soweit schonmal geholfen hast !!

Ich habe mir die pdf jetzt mal heruntergeladen. Da werde ich dann mal schmöckern... ;)

Viele Grüße

André

DeeSPe

Kein Problem, aber das PDF ist wirklich Pflicht mindestens 1x gelesen zu haben. Du lernst eigentlich fast alles über FHEM darin, und im schlimmsten Fall weißt Du nur dass Du es da schon 1x gelesen hast und schaust wieder nach.  :o

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hallo zusammen,

ich wollte noch kurz bekanntgeben.
Mit dem Code
Windgeschwindigkeit { my $val = (ReadingsVal("$name", "Windgeschwindigkeit", 0)); $val =~ s/,/\./g; return $val;}

konnte ich den Zahlenwert erfolgreich Formatieren.
Ich habe jetzt z.B.   4.3 m/s from 224°
vorliegen. Ich habe dann den Schaltwert in folgendes Notify geschrieben :

Wetterstation:Windgeschwindigkeit
.* {if($EVTPART1 > 1.0){fhem("set Antaris_Test on")} else {fhem("set Antaris_Test off")}}


Doch das funktioniert noch nicht. Werde mich da noch auf die Fehlersuche machen.

Viele Grüße

André

DeeSPe

Zitat von: Stargazer am 10 August 2016, 13:44:07
Windgeschwindigkeit { my $val = (ReadingsVal("$name", "Windgeschwindigkeit", 0)); $val =~ s/,/\./g; return $val;}

Wie und wo lässt Du das ausführen?

Zitat von: Stargazer am 10 August 2016, 13:44:07
Wetterstation:Windgeschwindigkeit
.* {if($EVTPART1 > 1.0){fhem("set Antaris_Test on")} else {fhem("set Antaris_Test off")}}


Doch das funktioniert noch nicht. Werde mich da noch auf die Fehlersuche machen.

Hast Du mal geschaut was denn wirklich in der Variablen $EVTPART1 im notify ankommt?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Grüß dich, Dan

Ich führe das als userReading unter HTTPMOD aus. Da, wo auch die Daten der Station auflaufen. So habe ich die Formatierung gleich in den Readings und kann damit besser arbeiten, so der Gedanke. Wenn man die Daten nochmal wo anders zur Verarbeitung braucht, stimmt das Format wenigstens.

ZitatHast Du mal geschaut was denn wirklich in der Variablen $EVTPART1 im notify ankommt?

Erwischt ! An dem Thema scheitere ich noch. Habe keine Ahnung wie das geht.

Viele Grüße

André

DeeSPe

Wie man etwas loggt ist auch bei den FHEM Basics erklärt.
z.B. so:

Wetterstation:Windgeschwindigkeit.* {Log3 undef,3,"Wert von EVTPART1 in Wetterstation:Windgeschwindigkeit: $EVTPART1"; if($EVTPART1 > 1.0){fhem("set Antaris_Test on")} else {fhem("set Antaris_Test off")}}

Und beim Auslösen ins Log schauen (im Event monitor + Häkchen Log setzen) und nach "Wert von EVTPART1 in Wetterstation:Windgeschwindigkeit:" suchen. Dahinter sollte dann der Wert von $EVTPART1 stehen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Stargazer

Hi Dan,

ich hatte deinen Code eingefügt und auf einmal funktionierte die Schaltung. Komischerweise.
Setze ich die Windgeschwindigkeit per setreading, springt der dummy sofort an. Ändere ich den Grenzwert in der Definition, so schaltet er auch was er soll.

Nun ist nur noch das Problem, dass er mir das Notify nicht selbständig zu aktualisieren scheint. Die Wetterdaten kommen derzeit alle 10 Sekunden frisch rein. Ist das wohl zu schnell ? Bei der Windanlage geht es mit 300 Sekunden Tip-Top... .

Viele Grüße

André