[gelöst] virtuelle Devices - Einstellungen

Begonnen von Bennemannc, 06 August 2014, 16:43:52

Vorheriges Thema - Nächstes Thema

Bennemannc

Hallo,

ich nutze ein virtuelles Device um Informationen zu speichern. Dabei sind mir zwei Sachen aufgefallen.
1) Ich möchte eigentlich nur den Status anzeigen. Das Device Btn1 hat den subType Switch und ist mit einem SWI gepeert. Nach jedem rereadcfg habe ich WebCmd's an dem Device, die ich aber nicht haben will, weil die im Dashboard blöde aussehen und nicht zu den anderen angezeigten Zuständen passen. Ich habe die auch schon zigfach gelöscht und ein SaveConfig gemacht - jedesmal werden die Teile wieder angelegt. Wie kann ich das abstellen.

2) Der V_Device_Btn5 ist mit einer Fernbedienung gepeert. Auf diesen Button habe ich ein notify laufen, was ein paar Lampe ein und andere aus schaltet. Zudem soll der V_Device_Btn4 auf off gesetzt werden. Das Ganze läuft sehr langsam ab und im Log kann ich sehen, das die Befehle mehrfach abgesetzt werden. Beim Btn4 nutze ich push off, da es anscheinend kein on oder off für virtuelle Devices (Switches) gibt. Der Btn4 hat auch einen notify, der das WLAN der Fritzbox schaltet - in diesem Fall immer nur off (deswegen auch push off). Auch stimmt die Reihenfolge des Ablaufes nicht mit der reellen Reihenfolge überein. Erst soll ein Licht angehen (das passt noch) danach sollten eigentlich andere reele HM-Devices ausgehen (aber das passiert nicht). Der letzte Befehl ist der fürs WLAN - aber der wird als zweites ausgeführt.
V_Device_Btn5 set Lichtschalter_02 on; set Lichtschalter_01,1_CH_PLATINE_01 off; set V_Device_Btn4 press off das ist der Code vom notify.
Was läuft da schief bzw. was kann ich hier besser machen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

marvin78

zu 1)

attr V_Device_Btn1 webCmd :

(der Doppelpunkt ist wichtig)

Bennemannc

Hallo,

so das mit dem Problem 1 hat funktioniert (Danke) - bleibt noch das Problem 2.
Kann ich eigentlich ein reales Device (Kanal eine Devices) auf einen virtuellen Devicekanal kopieren ? Den müsste ich ja dann "nur noch" anpassen.
Also quasi "copy Device_Switch_CH1 V_Device_Btn4".

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

martinp876

ein Reales Device kann vielfältig sein, ein virtuelles ist eine sehr einfache Abstraktion. Es ist nur dafür gedacht, den Trigger zu beantworten. Eine Logik ist nicht wirklich hinterlegt, ausser ein toggel des on/off bei Empfang eines triggers.
=> nein, man kann keinen realen aktor auf einen virtuellen kopieren.

Du kannst mit setreading den Zustand einer jeden entity verändern - z.B. nach on oder off

Bennemannc

Hallo Martin,

das Ganze geht ja von eine Funkfernbedienung aus - gibt es da nach dem peering mit dem virtuellen Device einen Unterschied zwischen short und long. Ich bekomme teilweise eine rot Bestätigung - obwohl der notify reagiert und die Befehle ausgeführt werden.
Wenn ich das richtig verstanden habe, müsste der notify dann also so lauten:
V_Device_Btn5 set Lichtschalter_02 on; set Lichtschalter_01,1_CH_PLATINE_01 off; setreading V_Device_Btn4 off

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

martinp876

Zitatgibt es da nach dem peering mit dem virtuellen Device einen Unterschied zwischen short und long.
ja
ZitatIch bekomme teilweise eine rot Bestätigung - obwohl der notify reagiert und die Befehle ausgeführt werden.
möglich - sind unterschiedliche Aktionen. Da wären messgelogs gut
ZitatWenn ich das richtig verstanden habe, müsste der notify dann also so lauten:
das ist nur ein teil des notify. Was soll es den tun? wenn Btn5 getriggert (egal mit was) geht Btn4 auf off. Es könnte sein, dass mehrere Trigger für Btn5 kommen, wenn nur einmal an der FB gedrückt wird. ("trig_..." und "trigLast")

Bennemannc

Hallo Martin,

kann man das mit dem Long und Short abstellen - bzw. Gleichschalten? Egal wie lange der Button auf der FB gedrückt wird, der V_Device_Btn soll immer schalten (einmal).

Also das Ganze läuft so. Der V_Device_Btn4 ist mit der FB_Btn12 gepeert. Auf dem V_Device_Btn4 horcht ein Notify, was V_Device_Btn4 {FB_WLANswitch("%")} macht.
Der V_Device_Btn5 ist mit der gleichen FB aber Btn11 gepeert. Auch hier horcht ein notify aufV_Device_Btn5 set Lichtschalter_02 on; set Lichtschalter_01,1_CH_PLATINE_01 off; setreading V_Device_Btn4 off macht. Gedacht ist das als "ab ins Bett" das eine Licht an, das andere Licht aus, Funksteckdose von der Stereoanlage aus, WLAN aus (Btn4 auf off).
Was mich wundert ist, das ich manchmal grün bekomme, manchmal rot, die Reihenfolge im set Kommando nicht eingehalten wird und das Ganze sehr lange dauert bis alles abgearbeitet ist (ca. 1 Minute).
Die reale Abfolge ist: Licht an, WLan aus, Funksteckdose aus, Licht aus.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

martinp876

Hallo Christoph,

der virtuelle Aktor schaltet nur einmal bei, auch bei long.
Ein notify auf ein Device (only) halte ich IMMER für ... schlecht. Du sollte ein Reading suchen. Die Entity kann mehrere Trigger bekommen - und bei Long bekommt sie eines für jede message (ist notwendig, falls einer dies Länge auswerten will).
Ich sehe da eine menge Trigger, die kommen sollten
virtActState:
virtActTrigger:
virtActTrigType:
virtActTrigRpt:
virtActTrigNo:
state:

da würde ich
virtActTrigNo:
nehmen. Der ändert sich einmal je "aktion", short oder long.
V_Device_Btn4:virtActTrigNo.*
state könnte auch gehen, STATE ist aber schlecht, da es nicht zu parsen geht.

Bennemannc

Hallo Martin,

das wars  ;) für Btn4 habe ich V_Device_Btn4:virtActState.* genommen und für Btn5 V_Device_Btn5:virtTrigNo.*. Vor allem Btn5 macht jetzt klack und fertig. Allerdings klappe es gerade beim Testen mit dem WLAN off nicht. Ich habe jetzt mal von setReading off auf set press short geändert. Wofür steht eigentlich postEvent ?

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

martinp876

eq3 unterscheidet zwischen Button Druck und Trigger mit Zusatzwert.
+ press simuliert also den Tastendruck mit folgenden Details:
- von einem virtuellen Button wird ein trigger identisch dem eines realen Aktors gesendet. Quelle ist der virtuelle Aktor. Long und Short ist möglich. Long aber nur eine message, keine wiederholungen (wollte noch niemand)
set <virtual> press short
Es werden alle gepeerten Aktoren gleichzeitig getriggert.
- wird press direkt für einen Aktor ausgelöst
set <aktor> press  long <peer> 10 0.4 10
Hier sendet die Zentrale eine message, die den ButtonPress eines peers des Aktors auslöst. Es wird also nur dieser Aktor "ausgelöst", nicht andere Klienten(peers) des Peers.
Man kann long mehrfach ausführen lassen, so z.B. einen 10 sec langen tastendruck simulieren (0.4sec, 25 wiederholungen)

+ postEvent kommt immer von einem virtuellen Device (auch einer VCCU). Hier kenne ich keine Simulation wie bei press.
- es kommt von einem Sensor, der auch einen Messwert mitgibt. Typisch einem BM, der einen Trigger(Bewegung) meldet und dazu den Helligkeitswert. Der Aktor kann diesen Wert in der ConditionTable filtern (CT).
Beim Kommando kann(muss) man diesen "messwert" angeben.
Long/short gibt es nicht.

Der Aktor - empfänger beider trigger - führt die jeweilige Aktion aus.

Varianten habe ich nicht probiert - so sollte es eigentlich ein postEvent long geben.

Bennemannc

Hallo Martin,

habe es mit "setreading V_Device_Btn4 virtActState off ". Mein größter Problem war aber wohl, das ich keine Einschränkungen am Device gemacht habe. Dadurch würde das Ganze X mal ausgelöst und ist sich selber in die Quere gekommen.

Danke Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

martinp876

Ein Fehler, den ich schon oft gesehen habe. So etwas ... macht vielleicht irgendwo sinn, aber nsehr selten in CUL_HM.
Man sollte (m.M.) erst einmal immer
- event-on-change-reading .*
- notfies immer mit EINEM device und EINEM Reading versehen.

Ausnahmen gibt es immer - für Anfänger definitiv nicht empfohlen. Leider scheint das Commandref dies anders zu suggerieren.