NEWS
HM-RPC Level Kanal 3&4 nicht synchron
-
@negalein
Entweder per Script oder vielleicht mit dem Adapter hierEdit: Falscher Link
Den hier meine ich
https://github.com/sbormann/ioBroker.alias-manager -
@dslraser sagte in HM-RPC Level Kanal 3&4 nicht synchron:
oder vielleicht mit dem Adapter hier
Cool, gibt einen Adapter.
Link hat schon gepasst. Ist im Beitrag eh zu Git verlinkt!
Danke -
@paul53 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
@dslraser sagte: wie so ein alias fertig aussieht ?
{ "from": "system.adapter.javascript.1", "user": "system.user.admin", "ts": 1617735406586, "common": { "name": "Rollo Wintergarten", "role": "level", "type": "number", "desc": "per Script erstellt", "unit": "%", "min": 0, "max": 100, "def": 0, "read": true, "write": true, "alias": { "id": { "read": "hm-rpc.0.00115A49A5B2BE.3.LEVEL", "write": "hm-rpc.0.00115A49A5B2BE.4.LEVEL" } } }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "alias.0.Wintergarten.Rollo.Level", "type": "state" }
@Negalein
Funktioniert übrigens wie gewünscht (auch in iQontrol)Hier mal das Script von @paul53
// Original-Datenpunkt const idOrigin = 'hm-rpc.0.00111BE99FD0D1.4.LEVEL'/*Rollo Wohnzimmer Panoramafenster:4 LEVEL*/ // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = 'hm-rpc.0.00111BE99FD0D1.3.LEVEL'/*Rollo Wohnzimmer Panoramafenster:4 LEVEL*/ // Alias-Datenpunkt const idAlias = 'Rollos.Rollo_Wohnzimmer_Panoramafenster'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Rollo Wohnzimmer Panoramafenster'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? String(1) : String(0)"; // role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // nur für Zahlen // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) custom = {}; // verhindert doppelte Ausführung von history, ... // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten ! // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(obj.common.type == 'number') { if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; } else { if(obj.common.min !== undefined) delete obj.common.min; if(obj.common.max !== undefined) delete obj.common.max; if(obj.common.unit) delete obj.common.unit; } if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj, function() { if(idRd) setState(idRd, getState(idRd).val, true); else setState(idSrc, getState(idSrc).val, true); }); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idOrigin, idRead);
Und hier der alias
{ "type": "state", "common": { "name": "Rollo Wohnzimmer Panoramafenster", "def": 0, "type": "number", "read": true, "write": true, "min": 0, "max": 100, "unit": "%", "role": "level", "smartName": { "de": "Rollo Panoramafenster" }, "alias": { "id": { "read": "hm-rpc.0.00111BE99FD0D1.3.LEVEL", "write": "hm-rpc.0.00111BE99FD0D1.4.LEVEL" } }, "desc": "per Script erstellt" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1617809166789, "_id": "alias.0.Rollos.Rollo_Wohnzimmer_Panoramafenster", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@dslraser sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Funktioniert übrigens wie gewünscht
Danke, werd ich gleich mal übernehmen. Und an mich anpassen!
-
@negalein sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Danke, werd ich gleich mal übernehmen. Und an mich anpassen!
zu früh gefreut, ein Blockly/Script braucht es trotzdem...
-
@dslraser sagte: ein Blockly/Script braucht es trotzdem...
Weshalb?
-
@paul53 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Weshalb?
Weil im alias trotzdem nicht immer der reale Wert (von Kanal 3) angezeigt wird.
-
@dslraser sagte: Weil im alias trotzdem nicht immer der reale Wert (von Kanal 3) angezeigt wird.
Kann das jemand bestätigen (habe keine Rollo-Aktoren)?
Nach meiner Erfahrung spiegelt der Alias exakt jeden Zustand des Read-Datenpunktes. -
@paul53 Muss rein technisch so sein, da der alias keinen eigenen State hat und immer nur ein Link zum tatsächlichen State ist. Wenn der Alias einen anderen State hat als der, der in
id.read
bzw.id
definiert ist, dann gibt es einen Bug. Wäre allerdings vermutlich bereits aufgefallen.Die Frage daher, woran machst du fest, dass sich die States unterscheiden @dslraser
-
@foxriver76 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Die Frage daher, woran machst du fest, dass sich die States unterscheiden @dslraser
Ich stelle das Blockly gern nochmal aus und zeige dann ein Screenshot wenn es wieder auftritt.
-
@dslraser sagte in HM-RPC Level Kanal 3&4 nicht synchron:
zu früh gefreut, ein Blockly/Script braucht es trotzdem...
Danke für die Info.
Wollte es heute umsetzen. -
@negalein sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Danke für die Info.
Wollte es heute umsetzen.Mach doch trotzdem mal. Ich habe mein Blockly jetzt mal deaktiviert. Mal schauen...So könnten wir es beide beobachten. (aber Dein Blockly, falls vorhanden und aktiviert auch ausschalten)
-
@foxriver76 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
@paul53 Muss rein technisch so sein, da der alias keinen eigenen State hat und immer nur ein Link zum tatsächlichen State ist. Wenn der Alias einen anderen State hat als der, der in
id.read
bzw.id
definiert ist, dann gibt es einen Bug. Wäre allerdings vermutlich bereits aufgefallen.Die Frage daher, woran machst du fest, dass sich die States unterscheiden @dslraser
Hier mal Küche links (ich bin nur am Handy im Moment)
realer Wert 80% (Kanal 3)
Kanal 4 auf 0%
Alias auch auf 0% -
@dslraser
Habe gerade Alias mit getrenntem Read- und Write-DP getestet:Das Verhalten hat sich gegenüber früheren Test geändert. Offenbar hat sich ein Fehler eingeschlichen.- Soll: Änderung von Alias wird in Write-DP übernommen und Alias ändert sich auf Zustand von Read-DP zurück
Ist: Änderung von Alias wird im Alias und im Write-DP wieder rückgängig gemacht (mit ack = false)
-
@paul53 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Offenbar hat sich ein Fehler eingeschlichen.
Danke fürs testen. Also ein Bug ?
-
@dslraser sagte: Also ein Bug ?
Nein, nur Ack kann abweichen (ist vielleicht so gewollt?).
Der erste Test erfolgte mit einem booleschen Wert.
EDIT: Hatte noch ein alias.write im Datenpunkt, der das Verhalten erklärt. Nach Entfernen verhält sich der Alias richtig, außer dass sich Ack vom Read-Datenpunkt unterscheiden kann.Jetzt habe ich mal mit emuliertem LEVEL getestet: Der Alias geht nach Änderung und Schreiben in den Write-DP (Kanal 4) auf den Wert des Read-DP (Kanal 3) zurück, allerdings mit ack = false (Original hat ack = true) bis der Read-Wert geändert wird. Der Alias folgt dem Read-Wert wie es sein soll.
-
@paul53 Die Frage ist hier auch etwas wie du testest, auf die Anzeige im Admin würde ich mich nicht verlassen.
Gerade mal getestet, mit subscribe als auch getState (non-cached Variante, andere nicht getestet) werden immer die korrekten Werte des read DP's übermittelt, nie die des write DPs.
-
@foxriver76 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
auf die Anzeige im Admin würde ich mich nicht verlassen.
aber trotzdem ist der Wert im alias nicht der read Wert
alias
Anzeige in iQontrol - mit alias verlinkt
Kanäle/ read - Kanal 3 mit 80 %
und hier der alias DP
{ "type": "state", "common": { "name": "Rollo Küche links", "def": 0, "type": "number", "read": true, "write": true, "min": 0, "max": 100, "unit": "%", "role": "level", "smartName": { "de": "Rollo Küche links" }, "alias": { "id": { "read": "hm-rpc.0.00111BE992A033.3.LEVEL", "write": "hm-rpc.0.00111BE992A033.4.LEVEL" } }, "desc": "per Script erstellt" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1617806058979, "_id": "alias.0.Rollos.Rollo_Kueche_links", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
mache ich etwas falsch ?
-
@dslraser sagte: aber trotzdem ist der Wert im alias nicht der read Wert
... Anzeige in iQontrol - mit alias verlinktHast Du nach dem Erstellen des Alias durch das Skript mal die Admin- und iQontrol-Instanzen neu gestartet?
-
@paul53 sagte in HM-RPC Level Kanal 3&4 nicht synchron:
Hast Du nach dem Erstellen des Alias durch das Skript mal die Admin- und iQontrol-Instanzen neu gestartet?
nein, das habe ich in der Tat noch nicht...mache ich gleich mal.
Edit: @paul53 eben war noch das hier im Log ? (noch nicht neu gestartet)
2021-04-08 15:43:12.612 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A044.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Küche Doppelfenster Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010239119,"_id":"hm-rpc.0.00111BE992A044.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.618 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A033.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Küche links Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010239584,"_id":"hm-rpc.0.00111BE992A033.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.618 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A036.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Schlafzimmer links Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010240141,"_id":"hm-rpc.0.00111BE992A036.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.619 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A034.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Schlafzimmer rechts Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010240601,"_id":"hm-rpc.0.00111BE992A034.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.620 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE99FD0D1.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Wohnzimmer Panoramafenster Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010242677,"_id":"hm-rpc.0.00111BE99FD0D1.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.620 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A102.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Wohnzimmer Terrassentür Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010243530,"_id":"hm-rpc.0.00111BE992A102.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.621 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A0FA.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Wohnzimmer links Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010242328,"_id":"hm-rpc.0.00111BE992A0FA.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}} 2021-04-08 15:43:12.622 - error: admin.0 (506) Alias subscription error. Please check your alias definitions: sourceId=hm-rpc.0.00111BE992A0F6.3.LEVEL, sourceObj={"type":"state","common":{"name":"Rollo Wohnzimmer rechts Status.LEVEL","def":0,"type":"number","read":true,"write":false,"min":0,"max":100,"unit":"%","role":"level"},"native":{"MIN":0,"UNIT":"100%","OPERATIONS":5,"MAX":1.01,"FLAGS":1,"ID":"LEVEL","TYPE":"FLOAT","DEFAULT":0,"CONTROL":"SHUTTER_TRANSMITTER.LEVEL"},"from":"system.adapter.hm-rega.0","user":"system.user.admin","ts":1617010243118,"_id":"hm-rpc.0.00111BE992A0F6.3.LEVEL","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}}