So,
sorry, hat etwas gedauert. Hier nun ein funktionierendes Script für den IO-Broker. Habe es bei mir im Einsatz und es tut was es soll. Man kann es bestimmt noch optimieren, ich kann so aber jeden Schritt nachvollziehen und auch verstehen. Daher ist das für mich Laien sehr gut geeignet.
00fc977c-51e3-45b0-88be-686c00327a6e-image.png
var Fuellstand;
on({ id: [].concat(['hm-rpc.2.001460C9ABA6A1.5.STATE']).concat(['hm-rpc.2.001460C9ABA6A1.6.STATE']).concat(['hm-rpc.2.001460C9ABA6A1.7.STATE']).concat(['hm-rpc.2.001460C9ABA6A1.8.STATE']), change: 'ne' }, async (obj) => {
setState('0_userdata.0.Zisterne.A' /* A */, getState('hm-rpc.2.001460C9ABA6A1.5.STATE').val, true);
setState('0_userdata.0.Zisterne.B' /* B */, getState('hm-rpc.2.001460C9ABA6A1.6.STATE').val, true);
setState('0_userdata.0.Zisterne.C' /* C */, getState('hm-rpc.2.001460C9ABA6A1.7.STATE').val, true);
setState('0_userdata.0.Zisterne.D' /* D */, getState('hm-rpc.2.001460C9ABA6A1.8.STATE').val, true);
Fuellstand = 0;
Fuellstand = (typeof Fuellstand === 'number' ? Fuellstand : 0) + (getState('hm-rpc.2.001460C9ABA6A1.8.STATE').val ? 0 : 10);
Fuellstand = (typeof Fuellstand === 'number' ? Fuellstand : 0) + (getState('hm-rpc.2.001460C9ABA6A1.7.STATE').val ? 0 : 20);
Fuellstand = (typeof Fuellstand === 'number' ? Fuellstand : 0) + (getState('hm-rpc.2.001460C9ABA6A1.6.STATE').val ? 0 : 40);
Fuellstand = (typeof Fuellstand === 'number' ? Fuellstand : 0) + (getState('hm-rpc.2.001460C9ABA6A1.5.STATE').val ? 0 : 80);
setState('0_userdata.0.Zisterne.Fuellstand' /* Fuellstand */, Fuellstand);
setState('0_userdata.0.Zisterne.Ueberlauf' /* Ueberlauf */, false);
setState('0_userdata.0.Zisterne.Kein_Pegel' /* Kein Pegel */, false);
setState('0_userdata.0.Zisterne.Fehler' /* Fehler */, false);
setState('0_userdata.0.Zisterne.Aus' /* Aus */, false);
if (Fuellstand == 110) {
setState('0_userdata.0.Zisterne.Ueberlauf' /* Ueberlauf */, true);
}
if (Fuellstand == 130) {
setState('0_userdata.0.Zisterne.Kein_Pegel' /* Kein Pegel */, true);
}
if (Fuellstand == 140) {
setState('0_userdata.0.Zisterne.Fehler' /* Fehler */, true);
}
if (Fuellstand == 150) {
setState('0_userdata.0.Zisterne.Aus' /* Aus */, true);
}
});
Das Script für die CCU3 habe ich noch nichts ans laufen gebracht. Da muss ich bei Gelegenheit noch mal ran.