[gelöst] Frage zu ReadingsVal, "eq" und "ne"

Begonnen von Rheingold, 15 März 2017, 11:59:20

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: Rheingold am 15 März 2017, 15:47:43
"off" != "up"

Diese Aussage ist schlichtweg falsch!
Richtig wäre:
"off" ne "up"

8) 8) 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

Rheingold

Im Perl-Syntax hast du wohl recht :D

Der Eventmonitor sagt folgendes wenn der Rolladen von ganz geöffnet zu vollständig geschlossen fährt:
Zitat2017-03-15 15:56:43 SOMFY Rolladen parsestate: down
2017-03-15 15:56:45 SOMFY Rolladen 10
2017-03-15 15:56:45 SOMFY Rolladen position: 10
2017-03-15 15:56:45 SOMFY Rolladen exact: 14.2857142857143
2017-03-15 15:56:48 SOMFY Rolladen 30
2017-03-15 15:56:48 SOMFY Rolladen position: 30
2017-03-15 15:56:48 SOMFY Rolladen exact: 28.5238095238095
2017-03-15 15:56:51 SOMFY Rolladen 40
2017-03-15 15:56:51 SOMFY Rolladen position: 40
2017-03-15 15:56:51 SOMFY Rolladen exact: 42.7619047619048
2017-03-15 15:56:54 SOMFY Rolladen 60
2017-03-15 15:56:54 SOMFY Rolladen position: 60
2017-03-15 15:56:54 SOMFY Rolladen exact: 57
2017-03-15 15:56:57 SOMFY Rolladen 70
2017-03-15 15:56:57 SOMFY Rolladen position: 70
2017-03-15 15:56:57 SOMFY Rolladen exact: 71.2380952380952
2017-03-15 15:57:00 SOMFY Rolladen 90
2017-03-15 15:57:00 SOMFY Rolladen position: 90
2017-03-15 15:57:00 SOMFY Rolladen exact: 85.4761904761905
2017-03-15 15:57:03 SOMFY Rolladen 100
2017-03-15 15:57:03 SOMFY Rolladen position: 100
2017-03-15 15:57:03 SOMFY Rolladen exact: 99.7142857142857
2017-03-15 15:57:06 SOMFY Rolladen closed
2017-03-15 15:57:06 SOMFY Rolladen position: 200
2017-03-15 15:57:06 SOMFY Rolladen exact: 200

Irgendwie verwirrend, da der parsestate wohl gesetzt wird  :o
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

viegener

@Rheingold: parsestate wird eigentlich nur gesetzt, wenn ein Kommando an den Rolladen über die Parse-Funktion (also als empfangener Funkbefehl) hereinkommt. Deshalb ist bei den Events auch nur am Anfang ein Eintrag, der dem Funkbefehl für runter entspricht. Verschiedene Stati sieht man da, wenn man einen Positionsbefehl angibt "set ... pos 50" dann wird erst eine Bewegung ausgelöst (down oder up) und dann irgendwann der Stoppbefehl gesendet (stop). Hilft hier also eigentlich nicht.

Oder in Kürze, wenn Du auf die Position des Rolladen reagieren willst verwende state oder position. Wenn Du erkennen willst, ob der Rolladen gerade in Bewegung ist und my-pos verwendet wird, dann könnte möglicherweise das internal "move" helfen. Da du ja nicht auf ein Event vom Rolladen reagierst ist also auch das Eventverhalten von internals (sprich keine events) irrelevant.

Also so etwas wie


Schalter1_links:off { if (InternalVal("Rolladen","move","") ne "off") { fhem("set Rolladen up") } else { fhem("set Rolladen stop") } }


Wobei ich das hier gerade nicht ausprobieren kann
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Rheingold

Danke für den Tipp. Ich habe es mit dem parsestate gelöst.

Und zwar stellte ich fest, dass wenn der Rolladen in einer aufwärts-Bewegung war, der parsestate immer auf "off" stand. Bei einer Abwärtsbewegung auf "on". In Folge dessen sind die beiden (schöner formatierten) Befehle entstanden die derzeit funktionieren
Schalter1_links:off IF (ReadingsVal("Rolladen","parsestate","") ne "off") (set Rolladen up) ELSE (set Rolladen stop)
Schalter1_links:on  IF (ReadingsVal("Rolladen","parsestate","") ne "on") (set Rolladen down) ELSE (set Rolladen stop)

Danke für die Hilfe, Gedankenanstöße und interessanten Diskussionen (aka off-topic :D) ;)
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

viegener

Schön das es funktioniert, allerdings ist anzumerken, dass diese Werte vermutlich nicht stimmen, wenn Du auch andere manuelle Fernbedienungen hast und ausserdem gerade ein grösserer Umbau in Vorbereitung bei dem auch parsestate nicht weiter verwendet wird.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Rheingold

Oh, guter Hinweis. Wenn der Wert bald nicht mehr geliefert wird, macht es natürlich Sinn jetzt schon die bessere Lösung zu suchen.

Schalter1_links:off IF (InternalVal("Rolladen","move","") ne "off") (set Rolladen up) ELSE (set Rolladen stop)
Schalter1_links:on  IF (InternalVal("Rolladen","move","") ne "on") (set Rolladen down) ELSE (set Rolladen stop)


Funktioniert :) Danke.
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

87insane

Hi zusammen,

wenn ich mir das hier so durch lese, sieht es aus wie eine Abwandlung von der DOIF Variante hier:
define rollo_manuell_ab DOIF ([ESPEasy_az_rollo:strom_output_runter] eq "on" and [az_rollo] ne "drive-down") (set az_rollo extern closed) DOELSEIF ([ESPEasy_az_rollo:strom_output_runter] eq "off" and [az_rollo] eq "drive-down") (set az_rollo extern stop)
define rollo_manuell_auf DOIF ([ESPEasy_az_rollo:strom_output_hoch] eq "on" and [az_rollo] ne "drive-up") (set az_rollo extern open) DOELSEIF ([ESPEasy_az_rollo:strom_output_hoch] eq "off" and [az_rollo] eq "drive-up") (set az_rollo extern stop)


Da ich noch in der Lernphase bin, würde mich interessieren, ob ich hier richtig liege....

CoolTux

Zitat von: 87insane am 30 Juli 2018, 13:00:11
Hi zusammen,

wenn ich mir das hier so durch lese, sieht es aus wie eine Abwandlung von der DOIF Variante hier:
define rollo_manuell_ab DOIF ([ESPEasy_az_rollo:strom_output_runter] eq "on" and [az_rollo] ne "drive-down") (set az_rollo extern closed) DOELSEIF ([ESPEasy_az_rollo:strom_output_runter] eq "off" and [az_rollo] eq "drive-down") (set az_rollo extern stop)
define rollo_manuell_auf DOIF ([ESPEasy_az_rollo:strom_output_hoch] eq "on" and [az_rollo] ne "drive-up") (set az_rollo extern open) DOELSEIF ([ESPEasy_az_rollo:strom_output_hoch] eq "off" and [az_rollo] eq "drive-up") (set az_rollo extern stop)


Da ich noch in der Lernphase bin, würde mich interessieren, ob ich hier richtig liege....

Da der Modulentwickler sowohl des Moduls IF als auch des Moduls DOIF der selbe ist stehen die Chancen hoch das die Syntax ähnlich ist.
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