NEWS
[gelöst] DP Type überprüfen und ggf. ändern
-
Hallo liebe Leute!
Ich vewende den MPD-Adapter (ich weiss, oldscool in Zeiten von Sonos & Al"f"exa). Dieser Adapter beinhaltet auch einen DP "mpd.0.playid". Dieser ist aber leider als "boolean" oder warum auch immer später als "integer" falsch definiert, denn mpd/mpc erwartet "number". Trotz issues auf GitHub, tut sich nichts in Richtung Korrektur seitens des Entwicklers. Um Logeinträge wie
(1593) You are assigning a number to the state "mpd.0.playid" which expects a integer. Please fix your code to use a integer or change the state type to number. This warning might become an error in
abzuschalten, ändere ich manell immer den type auf "number", dann ist bis zum nächsten Neustart Ruhe.
Kann mir bitte irgendjemand ein Script zur Verfügung stellen, das den Datenpunkt "mpd.0.playid" auf type prüft und ggf. auf "number" ändert? Trigger bei Änderung des Datentypes?
{ "from": "system.host.raspy-bad-radio.cli", "ts": 1572268026416, "user": "system.user.admin", "common": { "name": "Controlling playback playid", "role": "media.playid", "type": "boolean", "read": true, "write": true, "def": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "mpd.0.playid", "type": "state" }
LG und großes Danke, mxa
-
@metaxa sagte:
Trigger bei Änderung des Datentypes?
Auf den statischen Teil eines Datenpunktes kann nicht getriggert werden. Bei Instanzstart könnte ausgeführt werden:
const idPlay = 'mpd.0.playid'; const idInst = 'system.adapter.mpd.0.alive'; on(idInst, function(dp) { if(dp,state.val) { setTimeout(function() { var obj = getObject(idPlay); if(obj.common.type != 'number') { obj.common.type = 'number'; setObject(idPlay, obj); } }, 1000); } });
-
@paul53 sagte in DP Type überprüfen und ggf. ändern:
Bei Instanzstart könnte ausgeführt werden
Lieben Dank für die rasche Unterstützung!
Ich bilde mir ein, dass sich der Typ auch im laufenden Adapter ändert. Gerade heute wo ich meine Anfrage oben formulierte, war vorerst "boolean" und danach "integer". Jetzt schaue ich gerade nach, ist es wieder "boolean". Somit gehe ich davon aus, dass irgendwas zwischendurch immer wieder den DP ändert, könnte auch mein Blockly sein?Jetzt ist es aktuell wieder integer:
{ "from": "system.host.raspy-bad-radio.cli", "ts": 1572268026416, "user": "system.user.admin", "common": { "name": "Controlling playback playid", "role": "media.playid", "type": "integer", "read": true, "write": true, "def": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "mpd.0.playid", "type": "state" }
Ich versuche jetzt mal, deinen Code als Functionblock VOR mein Blockly zu kriegen.LG, mxa
-
-
wenn du dich auskennst, könntest du auf github den adapter forken,
in deinem repository anpassen und dann den angepassten adapter aus deinem github repo installieren. -
@paul53 "number" ist mir als Ziel klar, irgend etwas ändert den datenpunkt von sich aus zwischen boolean und integer. Hat noch nix mit deinem Code zu tun
-
@OliverIO sagte in DP Type überprüfen und ggf. ändern:
wenn du dich auskennst,
davon bin ich Lichtjahre entfernt.
Klingt aber sehr interessant, schlagartig ist mir jetzt auch das "forken" verständlich. Die Sache ist mir aber etliche Schuhnummen zu groß.
Lieben Dank!
-
@paul53 Nochmals lieben Dank, hab deinen Code meinen Bedürfnissen etwas angepaßt, es funktionert prächtig! Ich prüfe nun vor jedem Schreibvorgang den Typ des Feldes und ändere ihn ggf.
mxa