FHEM Forum

FHEM => Automatisierung => Thema gestartet von: maddinthebrain am 13 Mai 2018, 17:53:10

Titel: [Gelöst] Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 13 Mai 2018, 17:53:10
Hallo zusammen,

Ich habe meiner Markise eine Erweiterung spendiert, so dass sie bei zu viel Wind, Böen stärker 7m/s einfährt. Der Wind wird per Wetterstation WH1080 erfasst die auch von Fhem ausgewertet wird. Es gibt verschiedene Readings, u. a. auch windgust. Über eine Notify setze ich den Windwarner aktiv. Dieses ist über Internals:
   CFGFN     
   DEF        (WetterWH1080:windgust.*) {
if ($EVTPART1 > 7) {
fhem('setstate Windwarner on');
} else {
fhem('setstate Windwarner off');
}
}
   NAME       Windwarnung
   NOTIFYDEV  WetterWH1080
   NR         258049
   NTFY_ORDER 50-Windwarnung
   REGEXP     (WetterWH1080:windgust.*)
   STATE      2018-05-13 17:51:10
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logmysql:
           TIME       1526207384.64587
           VALUE      active
   READINGS:
     2018-05-13 12:29:44   state           active
Attributes:


definiert. Ich bin mir nicht sicher, ob das so richtig ist. Der Windwarner triggert wiederum andere Aktionen, z. B. Markise einfahren.

Ich habe auch einen Forstwarner eingerichtet. Dieser ist ganz ähnlich definiert:
Internals:
   DEF        (WetterWH1080:temperature.*) {
if ($EVTPART1 <= 0) {
fhem('setstate Frostwarner on');
} else {
fhem('setstate Frostwarner off');
}
}
   NAME       Frostwarnung
   NOTIFYDEV  WetterWH1080
   NR         74
   NTFY_ORDER 50-Frostwarnung
   REGEXP     (WetterWH1080:temperature.*)
   STATE      2018-05-13 17:50:10
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logmysql:
           TIME       1526188401.17759
           VALUE      active
   READINGS:
     2018-05-13 07:13:21   state           active
Attributes:


Wie gesagt, ich bin mir nicht sicher, ob dass passt. Über eine Rückmeldung würde ich mich sehr freuen.

Danke

Martin
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 13 Mai 2018, 20:54:54
OK, ich habe es mit anderen Werten testen können. Es funktioniert.

Grüße Martin
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: Beta-User am 14 Mai 2018, 14:58:25
Dass das irgendwie funktioniert, ist eigentlich klar.

Als ganz optimal würde ich das aber nicht ansehen:

- Um indirekt durch solche Konstruktionen eventuell verursachtes "Dauerfeuer" bei den Logikteilen, die wieder darauf zugreifen durch Setzen immer desselben Status zu vermeiden, sollte entweder noch eine Abfrage nach dem derzeitigen Status der Dummys rein (wenn schon "on", dann nicht nochmal setzen; so man den Dummy überhaupt benötigt und nicht die Schaltbefehle direkt auslöst und den Zustand nur intern in ein Reading des notify schreibt), oder der Dummy dann auf "event-on-change..." gesetzt sein.

- Bei solchen Schwellwert-Betrachtungen ist zu überlegen, ob man das noch mit einer Hysterese versieht, also z.B. hier die Frostwarnung erst wieder zu deaktivieren, wenn z.B. +4°C erreicht bzw. überschritten sind.

Just my2ct.

Gruß, Beta-User
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 15 Mai 2018, 12:43:05
Hallo Beta-User,

Danke für die Tipps. Das mit Hysterese hatte ich mir auch schon überlegt, wollte ich aber erst im nächsten Schritt umsetzten. Werde ich hier auch posten.

Warum ich über die Dummys gehe hat mehrere Gründe:

Grüße Martin
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: Beta-User am 15 Mai 2018, 12:57:43
Hi Martin,

kein Thema, das kann man ja auch mit Dummy's machen ;) .

Zu den Alternativen:
Für die optische Darstellung nehme ich ggf. readingsGroup, da geht das mit rot/grün genauso, nur dass eben nicht direkt ein state abgegriffen wird.
Und um - abhängig vom jeweiligen Zustandswechsel - Aktionen auszulösen, benötigt man nicht zwingend einen Dummy, man kann notify ja auch auf readings setzen oder direkt code aus dem "Ursprungsnotify" ausführen lassen.
Damit gingen dann auch komplexere Abfragen von wechselnden Abhängigkeiten wie von dir geschildert.

Was somfy angeht: Es könnte sein, dass ein Signalduino helfen könnte, den Status aktuell zu halten. Damit kann man nach meiner Kenntnis auch Fernbedienungssignale erkennen. Allerings habe ich keine Sofy-Devices, ist also ungetestet.

Gruß, Beta-User
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 15 Mai 2018, 15:09:12
Ich habe den SIGNALduino, jedoch dass er die Signale der Fernbedienung auswerten kann, wusste ich nicht. Ich hatte schon mal geschaut, ob der SIGNALduino was empfängt, wenn ich Die Fernbedienung betätige. War aber nix zu sehen... Aber keine Ahnung wie man es richtig macht bzw. Was die Voraussetzungen sind. Ansonsten machen beide SIGNALduinos was sie sollen.

Die restlichen Punkte schau ich mal an. Aber ich bin erst mal froh, dass es so funktioniert.  ;D aber was nicht ist kann noch werden.
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: nils_ am 15 Mai 2018, 15:13:43
ein bisschen lesestoff :)

https://wiki.fhem.de/wiki/SOMFY
https://wiki.fhem.de/wiki/Somfy_via_SIGNALduino
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 15 Mai 2018, 15:37:51
ja das kenne ich beides, da steht aber nicht, wie Signale einer richtigen Fernbedienung in den Signalduino reinkommen und diese auszuwerten sind. Der Signalduino ist ja selber eine "Fernbedienung".
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: Beta-User am 15 Mai 2018, 16:19:41
Wenn ich das richtig verstanden habe: richtige Frequenz einstellen (geht nur mit der CC1101-Variante), dann die Rolläden (bzw. die genutzten Fernbedienungen) (auch) via autocreate anlegen lassen.

Der Trick scheint das recht neue Attribut "rawDevice" zu sein. Das gehört vermutlich zu den manuell in FHEM angelegten Devices und dürfte mit dem zugehörigen Namen des "autocreate"-Devices zu füllen sein. Dadurch wird die logische Verbindung zwischen beiden Fernbedienungsvarianten hergestellt.

Wenn das paßt, sollte man ggf. das Wiki entsprechend ergänzen, das ist m.E. nicht selbsterklärend...
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 08 Juni 2018, 21:06:24
Also ich hatte das mehrmals erfolglos versucht. Die Daten der Fernbedienung werden nicht erkannt. Ist aber auch nicht weiter schlimm.

Schlimmer ist jedoch, dass der notify der auf den ON state des Gewitterwarners triggern soll genau dies nicht getan hat. Wenn ich ihn mit über den trigger Befehl triggere funzt es... Woran kann das liegen? Ich befürchte, dass das mit den anderen auch nicht funktioniert.

Kann man das besser machen? Und zwar so, dass man verschiedene Reaktionen auslösen kann, ohne Spaghetti Code zu brauchen.

Grüße Martin
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 09 Juni 2018, 14:19:23
So, wenn die Dummy devices über die Kommandozeile mit set Gewitterwarner onauf on setzte funzt das mit dem notify. Warum nicht, wenn das notify des GPIO Interrupts den Status setzt? ???

Grüße Martin

Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: Beta-User am 09 Juni 2018, 17:26:55
M.E. paßt der Event nicht.
ON != on != On...
Was liefert der Event-Monitor bzw. das entspr. Device-log?
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 11 Juni 2018, 09:40:31
@Beta-user: Ich habe nicht ganz verstanden, was du meinst. Aber um Missverständnissen vorzubeugen beschreibe ich das Ganzen mal im Detail:

Gewitterwarner:

Es gibt zwei notifys, GW1_Warnung und GW1_Entwarnung. Das deswegen, weil der Gewitterwarner (GW1 von ELV) zwei separate open-collector Ausgänge für Warnung und Entwarnung hat. Daher habe ich zwei GPIO Eingänge. Das Listing für GW1_Warnung ist dieses:
Internals:
   DEF        13
   EXCEPT_FD  25
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    13
   NAME       GW1_Warnung
   NR         75
   STATE      on
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2018-06-09 15:07:13   Counter         120
     2018-05-23 16:49:29   Dblclick        on
     2018-06-11 08:32:15   Pinlevel        high
     2018-06-09 15:07:13   Toggle          on
     2018-06-10 20:56:07   state           on
   fhem:
     interfaces switch
Attributes:
   direction  input
   interrupt  falling
   pud_resistor up


Für GW1_Entwarnung ist das entsprechend gleich.

Es wird jeweils ein notify verwendet. Listing für Gewitterwarnung:
Internals:
   DEF        GW1_Warnung:off setstate Gewitterwarner on
   NAME       Gewitterwarnung
   NOTIFYDEV  GW1_Warnung
   NR         86
   NTFY_ORDER 50-Gewitterwarnung
   REGEXP     GW1_Warnung:off
   STATE      active
   TYPE       notify
   READINGS:
     2018-06-11 08:14:45   state           active
Attributes:


Bei Gewitterentwarnung wird der Dummy Gewitterwarner wieder auf off gesetzt.

Die Aktion Markise zu schaut so aus:

Internals:
   DEF        Gewitterwarner:on set Markise up
   NAME       GW_Markise_zu
   NOTIFYDEV  Gewitterwarner
   NR         127
   NTFY_ORDER 50-GW_Markise_zu
   REGEXP     Gewitterwarner:on
   STATE      active
   TYPE       notify
   READINGS:
     2018-06-11 08:14:51   state           active
Attributes:


Wie gesagt: Wenn ich den dummy Gewitterwarner per set Gewitterwarner setstate on klappt das.

Und während ich so darüber nachdenke und das Geschriebene nochmals rekapituliere, kommt mir doch, dass mit setstate ein notify gar nicht getriggert werden kann!   :o

Also das werde ich als nächste versuchen... Ich berichte!

Grüße Martin
Titel: Antw:Markise schließen bei starkem Wind / Frostwarner
Beitrag von: maddinthebrain am 11 Juni 2018, 13:16:03
So, jetzt geht es!

Vielen Dank für Antworten!

Richtig ist so:

Internals:
   DEF        GW1_Warnung:off set Gewitterwarner on
   NAME       Gewitterwarnung
   NOTIFYDEV  GW1_Warnung
   NR         86
   NTFY_ORDER 50-Gewitterwarnung
   REGEXP     GW1_Warnung:off
   STATE      active
   TYPE       notify
   READINGS:
     2018-06-11 08:14:45   state           active
Attributes:


GRüße Martin