Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Value Node falscher Input Status #77

Closed
gerrieg opened this issue Apr 13, 2019 · 9 comments
Closed

Value Node falscher Input Status #77

gerrieg opened this issue Apr 13, 2019 · 9 comments
Labels
🐛bug Something isn't working

Comments

@gerrieg
Copy link

gerrieg commented Apr 13, 2019

Wenn ich die Value Node als output verwende, ist der Status korrekt. Wenn ich sie hingegen als Input nutze, ist der Status zuerst 'connected' und ab dem ersten Event 'object Object'. Sollte auch die value angezeigt werden.

Getestet mit einem Dimmer und Datapoint LEVEL

@hobbyquaker hobbyquaker added 🐛bug Something isn't working 🤔to be clarified labels Apr 13, 2019
@hobbyquaker
Copy link
Member

Hmm, auch das kann ich grade nicht reproduzieren. Die Statusanzeige ist auch von eingehenden Messages unbeeinflusst, die wird immer nur mit dem Wert aktualisiert der von den Schnittstellenprozessen per Event reinkommt. Kannst Du mal bitte ein Debug Node (auf Full msg object konfiguriert) da ran hängen und mir die Message zeigen die rauskommt wenn die Statusanzeige dieses "object Object" anzeigt?

@hobbyquaker
Copy link
Member

Ah, und zeig mal bitte auch die Message die Du in dem fall in den Node rein schickst.

@gerrieg
Copy link
Author

gerrieg commented Apr 13, 2019

Hab das Problem eingrenzen können:
Wenn ich die Value node verwende und den payload DANACH ändere, ändert sich der Status der Node! Wenn's also ein JSON ist, steht natürlich [object Object] dort.

Hänge einfach eine Change Node am Output an und setze msg.payload auf (String) blabla. Status der Node ändert sich.

@hobbyquaker
Copy link
Member

hobbyquaker commented Apr 13, 2019

Hmm, schaffe es immer noch nicht das zu reproduzieren. Kann mir auch noch nicht erklären wie das passieren kann, das text Attribut das dem status() Aufruf mitgegeben wird (https://github.com/rdmtc/node-red-contrib-ccu/blob/master/nodes/ccu-value.js#L34) ist ein "primitive" und das ist in Javascript nicht by-reference sondern by-value. Nachfolgende Änderungen am msg Object dürften sich hier nach meinem Verständnis gar nicht auswirken 🤔 Und das msg Object dass der ccu.subscribe callback reinbekommt wird bereits davor gecloned, sollte also auch nicht mehr by-reference sein...
Kannst Du mal bitte den Flow exportieren mit dem Du das reproduzieren kannst?

@gerrieg
Copy link
Author

gerrieg commented Apr 13, 2019

[
    {
        "id": "915f1090.c32eb",
        "type": "tab",
        "label": "Status Test",
        "disabled": false,
        "info": ""
    },
    {
        "id": "9fcc7efd.879db",
        "type": "ccu-value",
        "z": "915f1090.c32eb",
        "name": "Stehlampe",
        "iface": "BidCos-RF",
        "channel": "JEQ0193707:1 Stehlampe",
        "datapoint": "LEVEL",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": false,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "fedf58ef.6bfc1",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 110,
        "y": 140,
        "wires": [
            [
                "cce4dca0.ce6858"
            ]
        ]
    },
    {
        "id": "3f9ff85b.1031c",
        "type": "debug",
        "z": "915f1090.c32eb",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 650,
        "y": 140,
        "wires": []
    },
    {
        "id": "cb3b5bc4.386c",
        "type": "ccu-value",
        "z": "915f1090.c32eb",
        "name": "Stehlampe 2",
        "iface": "BidCos-RF",
        "channel": "JEQ0193707:1 Stehlampe",
        "datapoint": "LEVEL",
        "mode": "",
        "start": true,
        "change": true,
        "cache": true,
        "queue": false,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": true,
        "ccuConfig": "fedf58ef.6bfc1",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 110,
        "y": 220,
        "wires": [
            [
                "e4016b2.20e4218"
            ]
        ]
    },
    {
        "id": "e4016b2.20e4218",
        "type": "debug",
        "z": "915f1090.c32eb",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 450,
        "y": 220,
        "wires": []
    },
    {
        "id": "cce4dca0.ce6858",
        "type": "change",
        "z": "915f1090.c32eb",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "blabla",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 380,
        "y": 140,
        "wires": [
            [
                "3f9ff85b.1031c"
            ]
        ]
    },
    {
        "id": "fedf58ef.6bfc1",
        "type": "ccu-connection",
        "z": "",
        "name": "Raspberrymatic",
        "host": "192.168.1.20",
        "regaEnabled": true,
        "bcrfEnabled": true,
        "iprfEnabled": true,
        "virtEnabled": true,
        "bcwiEnabled": true,
        "cuxdEnabled": false,
        "regaPoll": false,
        "regaInterval": "60",
        "rpcPingTimeout": "60",
        "rpcInitAddress": "",
        "rpcServerHost": "192.168.1.5",
        "rpcBinPort": "2053",
        "rpcXmlPort": "2054",
        "queueTimeout": "5000",
        "queuePause": "250",
        "contextStore": "default"
    }
]

Bildschirmfoto 2019-04-13 um 17 27 24

@hobbyquaker
Copy link
Member

Strange... mit Deinem Flow kann ich es reproduzieren. Der sieht aber eigentlich exakt gleich aus wie mein Testflow mit dem ich es nicht reproduzieren kann 🤔 Muss forschen ;-)

@hobbyquaker
Copy link
Member

Ich glaub ich habs, einfach nicht dran gedacht dass ein send(msg) Synchron ist - und zwar über alle nachfolgende Nodes die auch Synchron sind (wie es eben auch der Change Node ist). Die msg selbst ist by-reference und ich hatte da einfach die genau falsche Reihenfolge gewählt... 🤦‍♂️ Sollte mit 2.0.12 gefixt sein.

@gerrieg
Copy link
Author

gerrieg commented Apr 13, 2019

Perfekt -> funktioniert!

Ich möchte die Gelegenheit gleich nutzen und mich einmal bei Dir für die zahlreichen Projekte die Du zur Verfügung stellst herzlich bedanken!
Und so ein Support ist auch nicht selbstverständlich. Auch dafür vielen vielen Dank an der Stelle!

@hobbyquaker
Copy link
Member

Danke für das Dankeschön, freut mich :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛bug Something isn't working
Development

No branches or pull requests

2 participants