Zuweisen eines Wertes auf einen anderen per nofify

Begonnen von theotherhalf, 26 November 2020, 10:31:21

Vorheriges Thema - Nächstes Thema

theotherhalf

Ich bin mit Perl wirklich nicht bewandert, habe aber bereits einiges was ähnelt in meiner Config und hoffe ihr könnt mir weiter helfen.

Ich habe 6 Velux Rolläden, die ich über die Homematic steuern möchte.
Dazu habe ich in der Homematic 6 virtuelle Jalousietaster angelegt. Diese Werte liegen mir jetzt als 6 einzelne readingsProxy vor. Sie kommen als float an und sind von 0-1 skaliert.
Nun möchte ich über ein notify, nämlich wenn der Wert sich ändert, diesen in das entsprechende Register "pcs" des Velux Rolladens schieben. DAs Device "Velux" ist das KLF200 Interface des Herstellers.
Im ersten Schritt geht es mir erstmal um die korrekte Zuweisung:

{ my $MLEVEL1 = ReadingsVal("Rolladen_Velux_xxxx_Sollwert_von_CCU","state","");; fhem "set Velux var Rolladen_Velux_xxxx $MLEVEL1"}

Wird dann hinter den Namen "Rolladen_Velux_xxxx"der Wert mit :pcs angehängt?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

$MLEVEL1 würde vermutlich schon zugewiesen, die Konstruktion wird aber eher nicht funktionieren und ist m.E. auch unnötig kompliziert...
Insgesamt ist aber nicht so richtig zu erkennen, worauf denn das notify reagiert/reagieren soll und wohin der readingsProxy "zeigt". M.E. sollte er sinnvollerweise auf den Velux-Kanal zeigen (?).

Das notify dagegen soll/darf nicht auf den readingsProxy hören (schau mal in den Event-Monitor, dann sollte klarer werden, warum). Es ist daher vermutlich einfacher, das notify auf den "Rolladen_Velux_xxxx_Sollwert_von_CCU" hören zu lassen und dann direkt $EVTPARTx (x=vermutlich 1) zu verwenden, so dass dann der Ausführungsteil sich auf das hier beschränkt:
set Velux var Rolladen_Velux_xxxx $EVTPART1

Mehr Hilfe? => Mehr input (list !!!!)
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

theotherhalf

Ich hänge mal ein bischen mehr Input an...
Einerseits den ReadingsProxy und dann noch den Velux Kanal.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

Bitte Text, screenshots will sich keiner ansehen...
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

theotherhalf

ReadingsProxy:


DeviceOverview
Rolladen_Velux_Emil_Sollwert_von_CCU

0.400000
Internals
DEF
Rolladen_Velux_Virtuell:6.LEVEL
DEVICE

Rolladen_Velux_Virtuell
FUUID

5fb8448d-f33f-0f31-f1a5-c9d885bef8f46858
NAME

Rolladen_Velux_Emil_Sollwert_von_CCU
NOTIFYDEV

global,Rolladen_Velux_Virtuell
NR

264
NTFY_ORDER

50-Rolladen_Velux_Emil_Sollwert_von_CCU
READING

6.LEVEL
STATE

0.400000
TYPE

readingsProxy
Readings
state

0.400000

2020-11-26 10:55:40
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

Velux Device:
DeviceOverview
Rolladen_Velux_Emil


Rolladen_Velux_Emil
Internals
DEF
192.168.178.31:51200 0
DeviceName

192.168.178.31:51200
FUUID

5f9e3570-f33f-0f31-4dfc-58e961945adcd652
IODev

Velux
LASTInputDev

Velux
MSGCNT

5
NAME

Rolladen_Velux_Emil
NR

251
NodeID

0
STATE

100 stop
TYPE

KLF200Node
Velux_MSGCNT

5
Velux_TIME

2020-11-26 10:52:52
Readings
MP

0

2020-11-26 10:52:51
MPtarget

0

2020-11-26 10:52:51
actuatorAddress

778c0f

2020-11-01 06:33:00
backboneReferenceNumber

000000

2020-11-01 06:33:00
buildNumber

19

2020-11-01 06:32:59
execution

stop

2020-11-25 10:58:41
ioManufacturer

VELUX

2020-11-01 06:33:00
lastCommandOriginator

SAAC

2020-11-22 13:54:11
lastControl

FHEM

2020-11-22 13:54:11
lastMasterExecutionAddress

ca0a83

2020-11-22 13:54:11
lastRunStatus

EXECUTION COMPLETED

2020-11-25 10:58:41
lastStatusReply

COMMAND COMPLETED OK

2020-11-07 21:00:10
model

VELUX SSL Roller Shutter

2020-11-01 06:33:00
name

Emil Rollo

2020-11-01 06:32:59
nodeTypeSubType

Roller Shutter

2020-11-01 06:33:00
nodeVariation

NOT SET

2020-11-01 06:32:59
operatingState

Done

2020-11-25 10:58:41
pct

100

2020-11-25 10:58:41
powerMode

LOW POWER MODE

2020-11-01 06:32:59
productCode

SSL

2020-11-01 06:33:00
productGroup

1

2020-11-01 06:32:59
productType

5

2020-11-01 06:32:59
production

2017 week 9

2020-11-01 06:32:59
remaining

0

2020-11-25 10:58:41
serial

83 2368 90 17 9 1978

2020-11-01 06:32:59
sessionID

462

2020-11-26 10:52:52
sessionInformationCode

20000500

2020-11-25 10:58:41
sessionStatusOwner

USER

2020-11-25 14:59:57
state

on

2020-11-25 10:58:41
target

100

2020-11-25 10:57:56
targetArrival

2020-11-25 10:58:37

2020-11-25 10:57:58
velocity

Not supported

2020-11-01 06:32:59
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

Ändere ich den Wert in der Homematic, dann erhalte ich ein Event:
2020-11-26 11:00:24 readingsProxy Rolladen_Velux_Emil_Sollwert_von_CCU 0.700000
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

MMn. brauchst du den readingsProxy nicht, der irritiert nur. Reagiere direkt auf den Event mit "Rolladen_Velux_Virtuell:6.LEVEL", und greife da dann den betreffenden $EVTPARTx, wie bereits geschrieben, ganz unabhängig davon, ob der rP einen Event wirft oder nicht. Es ist (m.E.) doppelt gemoppelt, und du willst ja eigentlich den virtuellen Wert nur irgendwie an den eigentlichen Adressaten (Velux_xy) weitergeben, oder habe ich das falsch verstanden?

Ansonsten bitte mal mit "list" beschäftigen, das gibt einen besseren output wie den Text aus dem Device-Overview rauszukopieren...
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

theotherhalf

Das stimmt, ich will den eigentlich nur zuweisen.
Wie wäre denn der korrekte String für die Zuweisung falls ich den readingsproxy umgehen würde, also quasi Direktverbindung?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

Versuch bitte erst mal mit dem Event-Monitor selbst, ein passendes notify zu basteln; der bereits gepostete Ausführungsteil sollte eigentlich passen. Bitte vorab aber testen, ob der Velux die vielen Stellen hinter dem Komma akzeptiert, oder ob man doch was umformatieren muss (Perl-sprintf, falls du das selbst lösen willst ;) ).
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

theotherhalf

Du meinst so?
define Emil_Velux_Rolladen_Verfahren notify Rolladen_Velux_Virtuell 6.LEVEL set Velux var Rolladen_Velux_Emil pct $EVTPART6
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

Fast. Device und der Rest sollten durch einen Doppelpunkt getrennt sein, und das Event darf weder Leerzeichen enthalten, noch nur Teile vom gesamten Event. Also eher so (aber $EVTPART6? Das kommt mir hoch vor...):
define Emil_Velux_Rolladen_Verfahren notify Rolladen_Velux_Virtuell:6.LEVEL.* set Velux var Rolladen_Velux_Emil pct $EVTPART6
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

theotherhalf

Habe es jetzt so stehen und es scheint zu funktionieren:
define Emil_Velux_Rolladen_Verfahren notify Rolladen_Velux_Virtuell:6.LEVEL.* set Velux var Rolladen_Velux_Emil pct $EVENT

Leider wird der Wert nicht durchgereicht. Ich habe es richtig verstanden, das beim entsprechenden Event der Wert von *.LEVEL6 auf pct kopiert wird, richtig?

In der Homematic ist der Wert dezimal 0-100%, sodaß ich davon ausgehe, das die 0,1...1,0 im Reading von *.LEVEL6 die Zahl als float dargestellt ist, oder? Sollte ich die dann mit 100 multiplizieren und die Dezimalstellen abschneiden? Oder wie sollte das Durchreichen aussehen?
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Beta-User

Bitte lies dich mal ein wenig ein. $EVENT beinhaltet hier auch den Readingnamen, den brauchst du nicht, weswegen mein Vorschlag auch $EVTPART1 war, was wahrscheinlich paßt. Dazu schreibst du aber nichts... (=> wie soll ich das deuten? Getestet und verworfen, überlesen, ...?)

Siehe dazu insgesamt nochmal:
Zitat von: Beta-User am 26 November 2020, 11:18:24
...der bereits gepostete Ausführungsteil sollte eigentlich passen. Bitte vorab aber testen, ob der Velux die vielen Stellen hinter dem Komma akzeptiert, oder ob man doch was umformatieren muss (Perl-sprintf, falls du das selbst lösen willst ;) ).
Und falls nicht klar ist, was mit "Ausführungsteil" gemeint ist: Das Wiki spricht von "Anweisung", https://wiki.fhem.de/wiki/Notify#Anweisung
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

theotherhalf

Sorry, das hatte ich noch falsch kopiert, natürlich muss es "$EVTPART1" sein. Das notify klappt auch. Vielen Dank für deine Hilfe!

Allerdings habe ich eben mal händisch getestet ob ich Werte direkt auf pct mit "Set" geben kann. Scheinbar ist das nicht der richtige Weg, da muss ich mich noch im Velux Threas einlesen. Ich bin auch nicht zu Hause, sondern arbeite aus der Ferne.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung