@paul53
Hallo Paul,
darf ich dich bitten mir nochmals zu meinem Problem mit der Abfrage zum Status der Ausgänge behilflich zu sein ?
Das mit den Ausgängen bekomme ich seit einigen Tagen einfach nicht hin.
Habe jetzt wie von dir im letzten Post vorgeschlagen, debug output nach Logwert und nach Zahl eingebaut.
Er listet mir auch unten beim Skript keine Werte auf ?.
Danke für die Hilfe.
LG
Karl

[image: 1615713681062-test-skript-ausg%C3%A4nge-o-abfrage-14.3.2021.jpg]
{
Header: {
Version: 5,
Device: "87",
Timestamp: 1615717354
},
Data: {
Outputs: [
{
Number: 1,
AD: "A",
Value: {
State: 0,
Value: 0,
Unit: "0"
}
},
{
Number: 2,
AD: "A",
Value: {
State: 0,
Value: 0,
Unit: "0"
}
},
{
Number: 3,
AD: "D",
Value: {
Value: 0,
Unit: "43"
}
},
{
Number: 4,
AD: "D",
Value: {
Value: 0,
Unit: "43"
}
},
{
Number: 5,
AD: "D",
Value: {
Value: 0,
Unit: "43"
}
},
{
Number: 6,
AD: "D",
Value: {
Value: 0,
Unit: "43"
}
},
{
Number: 7,
AD: "D",
Value: {
Value: 0,
Unit: "43"
}
},
{
Number: 11,
AD: "D",
Value: {
Value: 1,
Unit: "43"
}
}
]
},
Status: "OK",
Status code: 0
}
var TooMany, result, ErgebnisText, i, Start, Ende, ErgebnisWert;
schedule("*/30 * * * * *", async function () {
try {
require("request")('http://admin:Karl-100761@192.168.1.20/INCLUDE/api.cgi?jsonnode=2&jsonparam=O', async function (error, response, result) {
console.log((function (){var val = parseFloat('0'); if (val === 'true') return true; if (val === 'false') return false; return !!val;})());
TooMany = result.indexOf('TOO') + 1;
// Prüfen ob Fehler "Too many requests" und Werte aktualisieren
if (TooMany != 90) {
ErgebnisText = result;
// Bei 1 bis ?? Anzahl der belegten Eingänge eintragen, nicht die maximale Zahl der Eingänge (16)
for (i = 1; i <= 8; i++) {
Start = 0;
Ende = 0;
Start = ErgebnisText.indexOf('"Value"') + 1;
Start = Start + 18;
ErgebnisText = ErgebnisText.slice((Start - 1), ErgebnisText.length);
Ende = ErgebnisText.indexOf('"Unit"') + 1;
Ende = Ende - 3;
ErgebnisWert = ErgebnisText.slice(0, Ende);
// Über die i`s im Blocky wird die Auslesung des i.ten Wertes im Json definiert.
if (i == 1) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.1_SOLAR_PUMPE_WARMWASSER_EIN_AUS"/*A_1_SOLAR_PUMPE_WARMWASSER_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 2) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.2_SOLAR_PUMPE_HEIZUNG_EIN_AUS"/*A_2_SOLAR_PUMPE_HEIZUNG_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 3) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.3_LADE_PUMPE_WARM_WASSER_EIN_AUS"/*A_3_LADE_PUMPE_WARM_WASSER_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 4) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.4_HEIZKREIS_PUMPE_EIN_AUS"/*A_4_HEIZKREIS_PUMPE_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 5) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.5_ANFORDERUNG_KESSEL_EIN_AUS"/*A_5_ANFORDERUNG_KESSEL_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 6) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.6_VENTIL_SOLAR_HEIZUNG_EIN_AUS"/*A_6_VENTIL_SOLAR_HEIZUNG_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 7) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.7_VENTIL_SOLAR_KELLER_EIN_AUS"/*A_7_VENTIL_SOLAR_KELLER_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
if (i == 11) {
setState("0_userdata.0.UVR16x2_2.AUSGÄNGE.11_3_WEGE_VENTIL_TA_EIN_AUS"/*A_11_3_WEGE_VENTIL_TA_EIN_AUS*/, (function (){var val = parseFloat(ErgebnisWert); if (val === 'true') return true; if (val === 'false') return false; return !!val;})(), true);
}
}
}
}).on("error", function (e) {console.error(e);});
} catch (e) { console.error(e); }
});