NEWS
Datenmapping KNX > HUE - HUE > KNX
-
@shadow18 sagte:
ich habe es nun so gelöst:
Das ist völlig unverständlich ! Sind Datenpunkte, die "Status" im Namen enthalten, nicht reine KNX-Statusmeldungen und "read only" ? Wozu "steuere" auf diese Datenpunkte ?
Die Wirkung muss so sein: KNX-Status --> virt. DP (aktualisiere) --> KNX-Kommando (steuere) -
Ich habe es jetzt noch einmal umgestellt, funktionieren tut es nun.
Vielleicht kannst du hier noch einmal drüber schauen, ein paar Erklärungen was passiert.Ich brauche bei KNX immer ein Objekt, dass schaltet und eines mit einem Status, darum habe ich die Struktur wie im Foto angelegt. Im ETS habe ich entsprechend die Objekte von einem Dummy Gerät verknüpft, dass der Import mit dem KNX Adapter auch problemlos funktioniert.
Wenn ich nun das Licht einschalte zum beispiel über die Helligkeit schalten, dann muss zusätzlich zu dem Status Schalten auch Schalten gesetzt werden, was nach der Änderung durch Deine mithilfe nun auch perfekt funktioniert.
Ich würde es natürlich auch wenn es nun funktioniert aber falsch ist gerne korrigieren.
{
"from": "system.adapter.knx.0",
"user": "system.user.admin",
"ts": 1581265299300,
"common": {
"name": "Arbeitszimmer HUE lightstrip plus Helligkeitswert Status",
"type": "number",
"role": "indicator",
"min": 0,
"max": 100,
"read": true,
"write": false
},
"native": {
"dpt": "DPT5.001",
"address": "12/2/3",
"addressRefId": "P-021F-0_GA-1326",
"statusGARefId": "",
"actGARefId": "P-021F-0_GA-1325"
},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_Helligkeitswert_Status",
"type": "state"
} -
@shadow18 sagte:
falsch ist gerne korrigieren.
Wie die Objekteigenschaften des Datenpunktes "Arbeitszimmer HUE lightstrip plus Helligkeitswert Status" zeigen, sind die Status-Datenpunkte "read only" ("write":false, "role":"indicator"). Es macht keinen Sinn, sie per Script zu setzen, sondern sie müssen als Trigger dienen, damit der tatsächliche Zustand aus KNX an den virtuellen Datenpunkt "Hue lightstrip plus 1.level" übertragen wird.
Linke Seite (Kommandos an KNX): Trigger - virtuelle Datenpunkte, steuere KNX-Datenpunkte (mit Auswertung Ursprung)
Rechte Seite (Status von KNX): Trigger - KNX-Status-Datenpunkte, aktualisiere virtuelle DatenpunkteDa ich weder KNX noch HUE verwende, vermute ich, dass die KNX-Datenpunkte "on" die Zahlenwerte 0 und 1 liefern und die KNX-Farbwerte von 0 bis 254 sind ? Also muss bei den Kommandos (linke Seite) eine Multiplikation und beim Status (rechte Seite) eine Division erfolgen.
-
Ich habe Deine Logik mal übernommen. Auf KNX wird die Farbe nur mit 0-100 übertragen, darum der Faktor mit 2.54.
Der Helligkeitswert wird mit 0-100 übertragen.Das Steuern auf der linken Seite funktioniert ohne Probleme, Problem was ich jetzt noch habe, wie damals auch, dass wenn ich jetzt die Helligkeit setze, dann setzt der zwar den Schalten Status, aber nicht den Schalten. Wenn ich jetzt schalte, setzt der dann natürlich schalten und schalten Status richtig, aber hier wird dann Helligkeit nicht gesetzt sondern nur Helligkeit Status.
Echt ein wenig verhext.
Ich habe auf der Rechten Seite beides probier, sowohl "Schalten Status" also auch "Schalten" -
@shadow18 sagte:
Auf KNX wird die Farbe nur mit 0-100 übertragen, darum der Faktor mit 2.54.
Verstehe ich nicht ! Wozu dient dann der Faktor 2.54 ?
@shadow18 sagte in Datenmapping KNX > HUE - HUE > KNX:
Ich habe Deine Logik mal übernommen.
Die ist falsch herum. Zeige mal die Objektansicht der Datenpunkte "Hue lightstrip plus 1.??" inkl. Wurzelverzeichnis.
-
Jetzt mit Änderung mit Status
-
@shadow18
Welcher Ordner ist dem Ordner "Hue_lightstrip_plus_1" übergeordnet ?
Wird HUE über den Hue-Adapter oder über KNX gesteuert ? Ich sehe gerade gar nicht mehr durch ! -
Also ich habe den KNX Adapter und den HUE Adapter.
hue.0 und knx.0
-
@shadow18 sagte:
Also ich habe den KNX Adapter und den HUE Adapter.
Was ist Dein Ziel ? Sollen die Helligkeitswerte und Farben in beiden Instanzen gleichgezogen werden, egal wo die Änderung erfolgt ?
Wenn das so ist, kann nicht "aktualisiere" verwendet werden, sondern nur "steuere". -
Mein Ziel ist es, das ich durch das setzen des levels auch Schalten und Schalten Status gesetzt bekomme
Analog dazu wenn ich on setze, dass Helligkeit und Helligkeit Status gesetzt wird. -
@shadow18 sagte:
durch das setzen des levels auch Schalten und Schalten Status gesetzt bekomme
Analog dazu wenn ich on setze, dass Helligkeit und Helligkeit Status gesetzt wird.Schalten Status und Helligkeit Status sind Rückmeldungen von KNX. Die lassen sich nicht setzen (außer man hat im Tab "Objekte" den Expertenmodus aktiviert).
Also, wenn level > 0, dann Einschalten und wenn on = true, dann Helligkeit = level, sonst Helligkeit = 0 ? -
Ich steuere über KNX das HUE System. Also ist die letze Logic der Trigger nicht richtig.
Wenn ich nun über KNX das die Helligkeit setzt, schaltet sowohl Schalten als auch Schalten Status ein, das geht schon mal. Wenn ich nun aber Schalten auf 1 setze, dann setzt der nur die Helligkeit Status nicht aber die Helligkeit. Ich habe auch ein Java Fehler:
13:05:39.329 warn javascript.0 (20456) at Object.<anonymous> (script.js.common.Philips_HUE.Arbeitszimmer_HUE_lightstrips_plus_neu:25:7)Wenn das mit der Helligkeit noch klappt bin ich zufrieden, danke, dass Du Dir die Zeit dafür nimmst.
-
@shadow18
Du nimmst Kommandos ("write only") als Trigger, was nicht funktionieren kann !
Ich bin raus !!Anmerkung: Bei KNX müssen die Statuswerte den internen Zustand von KNX anzeigen, in Deinem Fall, was in der App dargestellt wird. Falls dem nicht so ist, taugt die App nichts. Die Statuswerte "Schalten Status" und "Helligkeit Status" scheinen ja richtig zu reagieren.
-
@paul53 danke trotzdem für die Hilfe.
Ich habe das alte noch ein wenig optimiert, so funktioniert es einwandfrei.
Hier noch der Blocky Code, falls andere diesen benötigen.
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="comment" id="T~`/,zsTzrW~5?2hUoja" x="-2887" y="-937"> <field name="COMMENT">KNX schalten und Helligkeit setzen</field> <next> <block type="on_ext" id="sW9}K$jM|ubI0LaaQ?AN"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="2es_x0f[u@d[7gf3PIg="> <field name="oid">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_schalten</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="eI6eFeX(fcqK?n+}bd+r"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Hue_lightstrip_plus_1.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_toboolean" id=",(NsX*lvw6E?8lC*SI`c"> <value name="VALUE"> <block type="on_source" id="TlstZ{sS~%H+L6Yh$iDK"> <field name="ATTR">state.val</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="Pn#.R~sPbk]bU)gu.v;X"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="yMSqOpiV`+lN;*PWeHW)"> <field name="oid">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_Helligkeitswert</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="9y5yytGCSt$WP$CC}wm/"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Hue_lightstrip_plus_1.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="Gnf;(7l=^A6;6#)OIqs|"> <field name="ATTR">val</field> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_Helligkeitswert</field> </block> </value> </block> </statement> <next> <block type="comment" id="Zt!a?;Qi5}{Kete@3z$Z"> <field name="COMMENT">KNX RGB setzen</field> <next> <block type="on_ext" id="o5OeOn})e%C3SC.FY#3B"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="b=.S@|0LH3WaZiE7TQnY"> <field name="oid">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_R</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="lH+F}uxKV5UQC0X.w@S7"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Hue_lightstrip_plus_1.r</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="$_p2*%[cOLy@PEirI=~u"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="eqz+9knwAcCYk5m*q+I_"> <field name="NUM">1</field> </shadow> <block type="get_value" id="V0;Cjx!Le^P,q%V$W#j+"> <field name="ATTR">val</field> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_R</field> </block> </value> <value name="B"> <shadow type="math_number" id="xvUjXH}v*y6dZ7qA#~VW"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="ei_{([w?bwzVGLGZb-;e"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="U{yHh`tY6f8Xt:MX^RJj"> <field name="oid">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_G</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="Y+/b_KUcfnTHVrg=GL-M"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Hue_lightstrip_plus_1.g</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="STt-9^l4V:C@A@5#s%oh"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="AsNKVkqC!6;kN=[1u}iG"> <field name="NUM">1</field> </shadow> <block type="get_value" id="MDCFr831ITN^Ir?R6.1A"> <field name="ATTR">val</field> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_G</field> </block> </value> <value name="B"> <shadow type="math_number" id="%6fLuA;lTtYA+)nZopz3"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="BaKlRg0cpY:q^Q~q$KO)"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3C:IJ3=wPu!x!t8RZKH,"> <field name="oid">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_B</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="s?~|E1%6Fc7JRr+G:~H0"> <mutation delay_input="false"></mutation> <field name="OID">hue.0.Hue_lightstrip_plus_1.b</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="T9=M1u]uRwWFZH|r/_r="> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="AsNKVkqC!6;kN=[1u}iG"> <field name="NUM">1</field> </shadow> <block type="get_value" id="NswJY5d_Hut,!1j+Fp^z"> <field name="ATTR">val</field> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_B</field> </block> </value> <value name="B"> <shadow type="math_number" id="FB#@a*F#9`DK(-eBVcmV"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="comment" id="fQClQ1-Ay[n6k}}GNc(Q" x="-1837" y="-962"> <field name="COMMENT">HUE Status nach KNX Schalten und Helligkeit</field> <next> <block type="on_ext" id="Hz/aqz[iTr3Z~3%GM20["> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="UNTJ[CW54VoHo#WRu_o~"> <field name="oid">hue.0.Hue_lightstrip_plus_1.on</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="O,1z~Di@EnWb{4Lxl2E."> <value name="IF0"> <block type="logic_compare" id="fJLX5shUc=/{Sw,!jD@q"> <field name="OP">NEQ</field> <value name="A"> <block type="on_source" id="#0LB_r2Dy}zDp;[$k?@S"> <field name="ATTR">state.from</field> </block> </value> <value name="B"> <block type="text" id="GjO`626V][CrVBb|d@b`"> <field name="TEXT">system.adapter.javascript.0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="_3+#qx4rJcFfT;0wqeHw"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_schalten</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_toboolean" id="^(4`f@OJ}2sk]MJLz~NF"> <value name="VALUE"> <block type="on_source" id="0/JBNpq||h~f[m/~j`%L"> <field name="ATTR">state.val</field> </block> </value> </block> </value> </block> </statement> <next> <block type="update" id="+FSIg4J|K[4gs!)oc.w%"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_schalten_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="mCE;,kO[/}7M]Ea,A5yk"> <field name="ATTR">val</field> <field name="OID">hue.0.Hue_lightstrip_plus_1.on</field> </block> </value> </block> </next> </block> </statement> <next> <block type="on_ext" id=";Yg%$9`!-8;CL`vSH0El"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="u6%*qZY38R8;RJkIXrkd"> <field name="oid">hue.0.Hue_lightstrip_plus_1.level</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="E[P.5DjPHk_;eGn2o2Yb"> <value name="IF0"> <block type="logic_compare" id="a1cHJ+74vZ4wWtMR/.fp"> <field name="OP">NEQ</field> <value name="A"> <block type="on_source" id="gc`qX-R%~{?x~v-ZTha)"> <field name="ATTR">state.from</field> </block> </value> <value name="B"> <block type="text" id="4/exVgGa+OQer%f~A:IG"> <field name="TEXT">system.adapter.javascript.0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="_plSilsfI)RQZ4=IjrL_"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_Helligkeitswert</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="MC,Av;i(66.A^fa4rsWe"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> <next> <block type="update" id="f:]zy$}82$KXsg=oc}I~"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_Helligkeitswert_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="`HQQ]6Ss=XgAWhTXUW2E"> <field name="ATTR">val</field> <field name="OID">hue.0.Hue_lightstrip_plus_1.level</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="6-#R(8dN2n5;g3VwH#L?"> <field name="COMMENT">HUE Status nach KNX RGB</field> <next> <block type="on_ext" id="A(9mRWI:M@(VojA=0/:O"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="aHlmkGx3ut`Q5Q;2ywP0"> <field name="oid">hue.0.Hue_lightstrip_plus_1.r</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="6nO-O0_(~w;B]LYaTZKU"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_R_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="y|I/UBT^{YK^xs0l:WD3"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="J!..N`GU}R$9+4V-yeYn"> <field name="NUM">1</field> </shadow> <block type="get_value" id="bETfr_q+~1;#%P~aNK-M"> <field name="ATTR">val</field> <field name="OID">hue.0.Hue_lightstrip_plus_1.r</field> </block> </value> <value name="B"> <shadow type="math_number" id="Pq4:rSs%2pDSg${Ofe`o"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="e[=.7ashK4?LZX%JYE^7"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_qJ07wWc5@T?ltZ08hi?"> <field name="oid">hue.0.Hue_lightstrip_plus_1.g</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="@NJeBTDC#H*01~CQ~|c`"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_G_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="$LkKrSEKc1()7V^CXZ`!"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="J!..N`GU}R$9+4V-yeYn"> <field name="NUM">1</field> </shadow> <block type="get_value" id="LGx-2`Gvw=)7)2k(qew1"> <field name="ATTR">val</field> <field name="OID">hue.0.Hue_lightstrip_plus_1.g</field> </block> </value> <value name="B"> <shadow type="math_number" id="^M~.H+T)Q6w*AS{{`7_-"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="`:Y*ssY+Y_QF$wL}?.:="> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="eh(x_X+WmA7f](y[.OZu"> <field name="oid">hue.0.Hue_lightstrip_plus_1.b</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="j=UR+3^:M3$UH7Q8G|:Z"> <mutation delay_input="false"></mutation> <field name="OID">knx.0.ioBroker.HUE_API.Arbeitszimmer_HUE_lightstrip_plus_B_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="zgF_m_lvpSya.%:n)cx2"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="J!..N`GU}R$9+4V-yeYn"> <field name="NUM">1</field> </shadow> <block type="get_value" id="jgn}0iTXT5tMG_zBCVOd"> <field name="ATTR">val</field> <field name="OID">hue.0.Hue_lightstrip_plus_1.g</field> </block> </value> <value name="B"> <shadow type="math_number" id="]QqvLuJ7Ot3uqc}NAR-)"> <field name="NUM">2.54</field> </shadow> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>