NEWS
node-red datenabfrage mit funktion node
-
Hallo,
ich bin blutiger Anfänger und scheitere daran über eine function-node
einzelne Werte auszulesen.Der Code meines function-node ist wie folgt:
var msg = { payload: msg.payload};
return msg;Damit erhalte ich nachfolgende payload:
14.6.2023, 13:43:25node: debug 30
msg : Object
object
payload: object
pd.iconWifiMode: 0
pd.iconOverloadState: 0
pd.wattsInSum: 276
pd.wifiVer: 0
pd.iconLowTempMode: 0
pd.iconGasGenMode: 0
pd.iconBmsParallelMode: 0
pd.iconInvParallelState: 0
pd.typec2Watts: 0
pd.iconTypecState: 0
pd.iconCarMode: 1
pd.iconCoGasState: 0
pd.iconRcState: 0
pd.iconHiTempState: 0
pd.iconHiTempMode: 0
pd.iconEcoMode: 0
pd.usb1Watts: 0
pd.standByMode: 120
latestTimeStamp: 1686743004837Folgendes funktioniert
var msg = { payload: msg.payload.latestTimeStamp};
return msg;Wenn ich jedoch einen Wert pd.xxx abfragen will bz.B.
var msg = { payload: msg.payload.pd.standByMode};
return msg;bekomme ich eine Fehlermeldung. Cannot read property...
Kann mir jemand sagen, woran der Fehler liegt ?
-
@michael-doll sagte in node-red datenabfrage mit funktion node:
Das schaut nicht nach einem Objekt aus - das pd-
Zum einen ist es schade ,dass Du gleich anfängst solche Dinge mit function Nodes zu probieren, aber um das beurteilen zu können, kopiere den Wert aus dem Debug Fenster hier in Code-Tags, wenn man das nachvollziehen soll. Ggf. auch noch den Flow.
-
@mickym
Hallo danke für die schnelle Antwort.
Die der Wert aus dem Debug-Fenster.{"pd.iconWifiMode":0,"pd.iconOverloadState":0,"pd.wattsInSum":381,"pd.wifiVer":0,"pd.iconLowTempMode":0,"pd.iconGasGenMode":0,"pd.iconBmsParallelMode":0,"pd.iconInvParallelState":0,"pd.typec2Watts":0,"pd.iconTypecState":0,"pd.iconCarMode":1,"pd.iconCoGasState":0,"pd.iconRcState":0,"pd.iconHiTempState":0,"pd.iconHiTempMode":0,"pd.iconEcoMode":0,"pd.usb1Watts":0,"pd.standByMode":120,"latestTimeStamp":1686749690959,"pd.chgPowerDc":657,"pd.dsgPowerDc":469,"pd.iconUsbState":0,"pd.typccUsedTime":5461,"pd.iconBtMode":0,"pd.typec2Temp":31,"pd.carUsedTime":861333,"pd.typec1Watts":0,"pd.soc":80,"pd.iconFactoryState":0,"pd.iconChgStationState":0,"pd.iconBmsParallelState":0,"pd.wirelessWatts":0,"pd.iconCarState":0,"pd.iconSocUpsMode":0,"pd.iconSolarBracketMode":0,"pd.wattsOutSum":135,"pd.iconWifiState":0,"pd.iconWindGenMode":0,"pd.iconUsbMode":0,"pd.iconBmsErrState":0,"pd.iconBmsErrMode":0,"pd.iconWindGenState":0,"pd.iconBtState":0,"pd.iconEcoState":0,"pd.carState":0,"pd.invUsedTime":32346655,"pd.iconAcFreqMode":0,"pd.typec1Temp":30,"pd.dsgPowerAc":536510,"pd.dcInUsedTime":4610,"pd.iconLowTempState":0,"pd.model":1,"pd.chgPowerAc":670774,"pd.beepState":0,"pd.iconPackHeaterState":0,"pd.wifiAutoRcvy":0,"pd.remainTime":113,"pd.iconFanState":0,"pd.chgSunPower":271,"pd.carTemp":0,"pd.lcdBrightness":100,"pd.iconRechgTimeState":0,"pd.qcUsb2Watts":0,"pd.lcdOffSec":300,"pd.iconTransSwState":0,"pd.iconTypecMode":0,"pd.sysVer":16844309,"pd.iconOverloadMode":0,"pd.iconRechgTimeMode":0,"pd.sysChgDsgState":2,"pd.iconInvParallelMode":0,"pd.qcUsb1Watts":0,"pd.iconTransSwMode":0,"pd.iconFactoryMode":0,"pd.kit0":0,"pd.kit1":0,"pd.kit2":0,"pd.iconFanMode":1,"pd.usbqcUsedTime":8397,"pd.dcOutState":0,"pd.usbUsedTime":5441,"pd.mpptUsedTime":7772,"pd.iconSolarPanelState":0,"pd.iconWirelessChgMode":0,"pd.wifiRssi":0,"pd.iconSocUpsState":0,"pd.iconSolarBracketState":0,"pd.errCode":0,"pd.iconPackHeaterMode":0,"pd.iconCoGasMode":0,"pd.carWatts":0,"pd.iconChgStationMode":0,"pd.iconAcFreqState":0,"pd.iconGasGenState":0,"pd.usb2Watts":0,"pd.iconRcMode":0,"pd.iconWirelessChgState":0,"pd.iconSolarPanelMode":0}
-
@michael-doll ich bin gerade nur am Handy-deswegen kann ich im Moment nur eingeschränkt helfen. Aber es ist so, wie ich vermutet habe, dass diese Objekteugenschaft mit Punkten definiert wurde, deswegen kannst du in der function Node nicht die Punktnotation nutzen. Entweder du kopierst Dir den Pfad wie aus meiner Abbildung raus, ansonsten musst du die Klammernotation mit Anführungszeichen nutzen
Also
msg.payload[“pd.standByMode“]
-
@mickym sagte in node-red datenabfrage mit funktion node:
msg.payload[“pd.standByMode“]
Ok, das funktioniert.
Danke für deine schnelle Hilfe