NEWS
Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen
-
was bedeutet das :
smartcontrol.0 2020-07-11 19:10:16.420 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' change: ack 'false' is not meeting conditions per isAckPassing() smartcontrol.0 2020-07-11 19:10:16.420 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' changed, new value: [38] (ack: false) smartcontrol.0 2020-07-11 19:10:01.402 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' change: ack 'false' is not meeting conditions per isAckPassing() smartcontrol.0 2020-07-11 19:10:01.402 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' changed, new value: [47] (ack: false) smartcontrol.0 2020-07-11 19:09:46.386 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' change: ack 'false' is not meeting conditions per isAckPassing() smartcontrol.0 2020-07-11 19:09:46.386 debug (24857) Subscribed state 'controll-own.0.mount.CPUTemp' changed, new value: [39] (ack: false) smartcontrol.0 2020-07-11 19:09:41.354 info (24857) 0 trigger schedules activated...
-
@MartyBr sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
Ich möchte ungern umziehen, fühle mich hier sehr wohl
Schade, dann könnte ich mir das ersparen
Ich schau mal. Du könntest parallel hier mal schauen http://suncalc.net/ welche Formel bzw. Anzahl Minuten sinnvoll wäre. Also Basis z.B. Sonnenaufgang (sunrise).
Dann für
night = sunrise - x Minuten
nightEnd = sunrise - y Minuten -
@liv-in-sky
Wegen "ack":Siehe hier: https://forum.iobroker.net/topic/34019/frage-zu-subscribeforeignstates-ack/9
Insbesondere Kommentar von AlCalzone:
@AlCalzone sagte in Frage zu subscribeForeignStates() -> ack:Bei anderen Adaptern solltest du davon ausgehen, dass die States erst "gültig" bzw. bestätigt sind, wenn
ack: true
.States mit
ack: false
zu setzen, ist eine Aufforderung an den dazugehörigen Adapter (oder Skript), diese Änderung zu verarbeiten.Daher werden Datenpunkt-Änderungen bei anderen Adaptern ignoriert, falls nicht bestätigt (ack: false).
Als Ausnahme habe ich für Datenpunktänderungen für 0_userdata.0 und javascript.x folgende Optionen eingebaut:
-
@Mic hatte ich auch umgestellt - selbe meldung
-
@liv-in-sky
Klar, die Einstellung betrifft auch nur:
Du hast da aber einen Adapter. Bestätigt dieser Adapter "control-own" denn nicht sauber den Datenpunkt mit
ack:true
? Denn das wäre gemäß https://forum.iobroker.net/post/448606 dann ein Fehler/Optimierungsbedarf dieses "control-own" Adapters. -
@Mic meine datenpunkte liegen unter controll-own.0 - ist ein eigener ordner - könnte man da noch einbauen, dass man selber welche definieren kann
-
@liv-in-sky sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
meine datenpunkte liegen unter controll-own.0
Hmm, das entspricht aber nicht den ioBroker-Regeln, also eigene Datenpunkte dürfen nur unter 0_userdata.0 oder javascript.x sein...
-
@Mic userdata.0 kam erst nach einigen jahren - hatte mir damals das angelegt
-
@Mic wollte mir den umzug von fast 700 eigenen datenpunkten ersparen
-
@liv-in-sky sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
@Mic userdata.0 kam erst nach einigen jahren - hatte mir damals das angelegt
Verstehe ich gut
Ich nehme es mal auf die Liste, aber nicht mit hoher Prio (weil eben nicht der ioBroker Spezifikation entsprechend), erst sind noch andere Dinge dran -
@Mic sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
eigene Datenpunkte dürfen nur unter 0_userdata.0 oder javascript.x sein...
Neee
Meine liegen auch unter Messwerte.0 oder Sytemvariablen.0
-
@Mic vielleicht könntest du die prio ein wenig höherschrauben es gibt vielleicht mehr von uns "assi-usern"
-
@Homoran sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
Meine liegen auch unter Messwerte.0 oder Sytemvariablen.0
Verstehe.
@liv-in-sky
Ach Quatsch, alles gut , du und @Homoran und wohl einige weitere haben die wohl halt einfach angelegt, auch weil es geht in den Objekten und aus Übersichtlichkeit.Ich schau mal. Idealerweise prüfe ich, ob hinter dem Hauptdatenpunkt "Messwerte.0" etc. ein "echter" Adapter ist, wenn ja, dann "ack:true", wenn nicht, dann kann zieht er die Einstellung von
-
klasse idee
-
@Mic sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
weil es geht in den Objekten
zumindest ging es früher - jetzt nicht mehr (so einfach).
@Mic sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
und aus Übersichtlichkeit.
Ganz genau!
Natürlich muss man aufpassen, dass später nicht ein Adapter diesen Namespace belegt. Dann muss es Tatsächlich unter 0_userdata.0 - würde aber alles noch eine Ebene tiefer verschachteln.
-
@Mic mic sollte der alias ordner nicht eventuell auch integriert werden ???
-
@liv-in-sky
@Mic
Habe hier den passenden Fehler: -
@Mic
Das hier wirft er aus:
Ich glaube, das betrifft fast alle nördlich von Hannover, insbesondere die Nordlichter.
-
@liv-in-sky sagte in Aufruf: Neuen SmartControl-Adapter 0.1.0-alpha.x testen:
@Mic mic sollte der alias ordner nicht eventuell auch integriert werden ???
Bau ich auch gleich mit ein, danke. Werde jetzt umsetzen, Update folgt bald.
-
Anderes Acknowledge für eure eigenen Datenpunkte wie unter "Messwerte.0" ist jetzt eingebaut, ebenso inklusive alias.0, etc.
Siehe Version 0.1.0-alpha.7 auf Github.
Falls es interessiert, so mache ich das jetzt:
/** * Verify acknowledge (ack) once a state was changed. * * In General: Any state changes of states will be ignored, if acknowledge (ack) = false. * The reason is that adapters confirm states by the acknowledge "ack" flag (setting to true). * Reference: https://forum.iobroker.net/post/448606 * * Exception 1: States under javascript.x/0_userdata.0/alias.x: For states created by users under, this behavior can be changed in the adapter options. * Exception 2: States under smartcontrol.x.: ack:false only. * Exception 3: States which are not under a "real" adapter namespace, so like "Messwerte.0". Reason: Several users have created * own states in the object main tree, like "Messwerte.0". https://forum.iobroker.net/post/461189 * * @param {string} statePath - State Path * @param {ioBroker.State|null|undefined} stateObject - State object * @return {Promise<boolean>} false if state change shall be ignored due to the ack (or error occurred), otherwise true. * */ async isAckPassing(statePath, stateObject) { try { if(!stateObject || !statePath) return false; const namespace = `${statePath.split('.')[0]}.${statePath.split('.')[1]}`; // like sonos.1 let isUserState = false; if (statePath.startsWith('javascript.') || statePath.startsWith('0_userdata.0') || statePath.startsWith('alias.')) isUserState = true; if(!isUserState) { // Check if state is under a "real" adapter namespace. const isRealAdapter = await this._adapter.getForeignObjectAsync(`system.adapter.${namespace}`); if (!isRealAdapter) isUserState = true; } if (isUserState) { if (!this._adapter.config.triggerStatesAck || this._adapter.config.triggerStatesAck == 'false') { if (stateObject.ack == false) { return true; } else { return false; } } else if (this._adapter.config.triggerStatesAck == 'true') { if (stateObject.ack == true) { return true; } else { return false; } } else { // any (ack: true or false) return true; } } else if (statePath.startsWith(`${this._adapter.namespace}.`)) { // Any states under this adapter instance, we require ack = false; if (stateObject.ack == false) { return true; } else { return false; } } else { // For any other "real" adapter state changes, we require ack = true if (stateObject.ack == true) { return true; } else { return false; } } } catch (error) { this.dumpError('[isAckPassing()]', error); return false; } } ```