Benötige Hilfe Dummy State auslesen und damit ein Set Befehl absetzen

Begonnen von wendeling, 30 August 2018, 22:07:53

Vorheriges Thema - Nächstes Thema

wendeling

Hallo,
habe folgendes Problem :
Ich betreibe meine Rollos mit Motor.
Situation1, die Rollo sind z.B. Zu 80% unten , nun wird aufgrund einer weiteren Aktion das Rollo zu 100% geschlossen. Vorher speichere ich den letzten status(80%) in einem dummy .
EG_Rollo_dummy
Nun ist die weitere Aktion abgeschlossen, und jetzt möchte ich wieder zum ursprünglichen Status (80%) zurück.

Wie kann ich den state Status  vom EG_Rollo_dummy auslesen und damit per set Befehl die Position bei EG_Rollo setzen

Mit freundlichen Grüßen
Wendelin

Hollo

Zitat von: wendeling am 30 August 2018, 22:07:53
...Wie kann ich den state Status  vom EG_Rollo_dummy auslesen und damit per set Befehl die Position bei EG_Rollo setzen...

So in der Richtung; ungetestet...


fhem("set EG_Rollo ".ReadingsVal('EG_Rollo_dummy','state','100');
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"

Beta-User

[OT]
@wendeling: Warum nutzt du dafür eigentlich einen Dummy und nicht ein eigenes Reading direkt am EG_Rollo-Device?
Also mit "set EG_Rollo meineLetztePosition <Wert>".Das kannst du genauso lesen (und ohne rotes ? löschen) wie den Dummy (und wie von Hollo vorgeschlagen). (ggf. alternativ mit ReadingsNum()).
Hat den Vorteil, dass es sich leichter generalisieren läßt (z.B. ein notify für alle "Tür wurde geschlossen"-Ereignisse).
[/OT]
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

CoolTux

Zitat von: Hollo am 31 August 2018, 12:37:23
So in der Richtung; ungetestet...


fhem("set EG_Rollo ".ReadingsVal('EG_Rollo_dummy','state','100');


Oder mittels SetMagic

set EG_Rollo [EG_Rollo_dummy:state]
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

wendeling

Hallo,
super, habe die letzte Möglichkeit mal ausprobiert, funktioniert, aber ...

muss noch folgendes Problem lösen :
Habe im state folgendes stehen "pct-30"
ich benötige es aber in der Form :
"pct 30"
damit ich den Positionsbefehl ausführen kann!

set EG_Rollo_Wohnzimmer_g_Fenster [EG_Rollo_Wohnzimmer_g_Fenster_dy:state]

"pct-30" funktioniert nicht !

wie kann ich das machen ?

Gruß
Wendelin


   

CoolTux

Zitat von: wendeling am 31 August 2018, 17:46:02
Hallo,
super, habe die letzte Möglichkeit mal ausprobiert, funktioniert, aber ...

muss noch folgendes Problem lösen :
Habe im state folgendes stehen "pct-30"
ich benötige es aber in der Form :
"pct 30"
damit ich den Positionsbefehl ausführen kann!

set EG_Rollo_Wohnzimmer_g_Fenster [EG_Rollo_Wohnzimmer_g_Fenster_dy:state]

"pct-30" funktioniert nicht !

wie kann ich das machen ?

Gruß
Wendelin




Dann geht nur Perl. Also die Lösung mit ReadingsVal.


fhem('set EG_Rollo ' . (split('-', ReadingsVal('EG_Rollo_dummy','state','100')))[0] . ' ' . [1]);


Ungetestet
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

Was spräche dagegen, ReadingsNum() zu verwenden und nicht state auf den Dummy (oder das neue Reading) zu schreiben, sondern den bisherigen pct-Wert?

Ein list vom Device hätte geholfen...
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

CoolTux

Zitat von: Beta-User am 31 August 2018, 18:10:27
Was spräche dagegen, ReadingsNum() zu verwenden und nicht state auf den Dummy (oder das neue Reading) zu schreiben, sondern den bisherigen pct-Wert?

Ein list vom Device hätte geholfen...

Macht definitiv Sinn. Zu mindest das split hätte ich mir eigentlich sparen können.


fhem('set EG_Rollo pct ' . ReadingsNum('EG_Rollo_dummy','state','100') );


Wozu eigentlich diese Dummy Geschichte?




Code angepasst
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

wendeling

Hallo,
hier ein list von device


Internals:
   NAME       EG_Rollo_Wohnzimmer_g_Fenster
   NR         727
   STATE      pct-30
   TYPE       ROLLO
   READINGS:
     2018-08-31 17:32:29   command         stop
     2018-08-31 17:32:22   desired_pct     none
     2018-07-26 21:24:52   desired_position 100
     2018-08-31 17:32:22   drive-type      modul
     2018-08-31 17:32:22   last_drive      drive-up
     2018-08-31 17:32:29   pct             31.25
     2018-07-26 21:25:00   position        100
     2018-08-31 17:32:33   state           pct-30
Attributes:
   autoStop   0
   commandDown set HMW_IO_12_Sw7_DR_NEQ1810319_15 on
   commandStopDown set HMW_IO_12_Sw7_DR_NEQ1810319_15 off
   commandStopUp set HMW_IO_12_Sw7_DR_NEQ1810319_16 off
   commandUp  set HMW_IO_12_Sw7_DR_NEQ1810319_16 on
   devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100@red:open half:fts_shutter_50@blue:closed drive-up:fts_shutter_up@green:stop drive-down:fts_shutter_down@green:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80@blue:closed pct-80:fts_shutter_80@blue:closed pct-70:fts_shutter_70@blue:closed pct-60:fts_shutter_60@blue:closed pct-50:fts_shutter_50@blue:closed pct-40:fts_shutter_40@blue:open pct-30:fts_shutter_30@blue:open pct-20:fts_shutter_20@blue:open pct-10:fts_shutter_10@blue:open pct-0:fts_shutter_10@blue:closed
   excessBottom 5
   excessTop  0
   group      ROLLO_STEUERUNG
   icon       fts_shutter_updown
   resetTime  3
   room       EG_Wohnz.,Z_ROLLO
   secondsDown 15
   secondsUp  16
   switchTime 1
   type       normal
   webCmd     open:closed:half:stop:pct


ich möchte also die aktuelle Position pct-30 speichern , und später wieder nach Veränderung der Position wieder dahin zurück zu fahren.

Egal ob mit dummy oder einer anderen Möglichkeit (es muss nur mit einem set Befehl funktionieren)



Gruß
Wendelin



TomLee

Dann mach doch das was Leon zeigte, hat sich nur verschrieben, er meinte:

fhem('set EG_Rollo pct ' . ReadingsNum('EG_Rollo_dummy','state','100') );

https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum

wendeling

Hallo,
wahrscheinlich bin ich zu doof,
aber wie bekomme ich diese Befehlszeile zum Laufen ?

ruß
Wendelin

CoolTux

In Deinem Notify eintragen. Detailansicht des Notify in FHEMWEB auswählen und da auf DEF drücken

define notifytest notify REGEX { fhem('set EG_Rollo pct ' . ReadingsNum('EG_Rollo_dummy','state','100') ); }


Bitte REGEX durch Deine Regex ersetzen
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

wendeling

Hallo,
habe leider was vergessen zu schreiben, wenn ich einen Wert von 34.555 habe dann muss immer auf glatte 10er Zahlen gerundet werden, also 30.
Oder 57.6253 = 60

Gruß
Wendelin

Byte09

Zitat von: wendeling am 31 August 2018, 19:27:06
Hallo,
habe leider was vergessen zu schreiben, wenn ich einen Wert von 34.555 habe dann muss immer auf glatte 10er Zahlen gerundet werden, also 30.
Oder 57.6253 = 60

Gruß
Wendelin
Nicht übel nehmen , aber dazu gibt es gefühlt 1000 Beiträge .

Suchmaschine - fhem zahl runden - ggf noch notify .


Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


CoolTux

Zitat von: wendeling am 31 August 2018, 19:27:06
Hallo,
habe leider was vergessen zu schreiben, wenn ich einen Wert von 34.555 habe dann muss immer auf glatte 10er Zahlen gerundet werden, also 30.
Oder 57.6253 = 60

Gruß
Wendelin

Artet ein bisschen aus. Zeig mal bitte wie Dein Notify aus schaut. List notify
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