NEWS
Alias nach Bedingung aus Zwei Datenpunkten füllen
-
Hallo zusammen,
ist es möglich einen Alias nach einer Bedingung zu füllen?
Konkret:
Es soll ein AliasDatenpunkt nach einer aktualität eines Datenpunktes, nicht älter als 1h, entweder mit dem einen, oder einen anderen Datenpunkt beschrieben werden. -
Hallo zusammen,
ist es möglich einen Alias nach einer Bedingung zu füllen?
Konkret:
Es soll ein AliasDatenpunkt nach einer aktualität eines Datenpunktes, nicht älter als 1h, entweder mit dem einen, oder einen anderen Datenpunkt beschrieben werden.@australien sagte: entweder mit dem einen, oder einen anderen Datenpunkt beschrieben werden.
So etwas geht nur per Skript.
-
@australien sagte: entweder mit dem einen, oder einen anderen Datenpunkt beschrieben werden.
So etwas geht nur per Skript.
@paul53
das hatte ich befürchtet.
Leider bin ich da nicht sehr versiert, kannst du mir da ein grobes vorstellen, welches ich dann bei mir anpassen kann. -
@paul53
das hatte ich befürchtet.
Leider bin ich da nicht sehr versiert, kannst du mir da ein grobes vorstellen, welches ich dann bei mir anpassen kann.@australien sagte: vorstellen, welches ich dann bei mir anpassen kann.
Dazu ist die Aufgabenstellung zu vage.
EDIT: Meinst Du so mit den zwei Quell-Datenpunkten?
const id1 = ''; // bevorzugter DP const id2 = ''; // alternativer DP const idDst = '0_userdata.0.xyz'; var ts1 = getState(id1).ts; on({id: id1}, function(dp) { setState(idDst, dp.state.val, dp.state.ack); ts1 = dp.state.ts; }); on({id: id2}, function(dp) { if(dp.state.ts - ts1 > 3600000) setState(idDst, dp.state.val, dp.state.ack); }); -
@australien sagte: vorstellen, welches ich dann bei mir anpassen kann.
Dazu ist die Aufgabenstellung zu vage.
EDIT: Meinst Du so mit den zwei Quell-Datenpunkten?
const id1 = ''; // bevorzugter DP const id2 = ''; // alternativer DP const idDst = '0_userdata.0.xyz'; var ts1 = getState(id1).ts; on({id: id1}, function(dp) { setState(idDst, dp.state.val, dp.state.ack); ts1 = dp.state.ts; }); on({id: id2}, function(dp) { if(dp.state.ts - ts1 > 3600000) setState(idDst, dp.state.val, dp.state.ack); });@paul53
danke und sorry für meine späte Rückmeldung.ich habe das Script jetzt folgendermaßen abgeändert
/* befüllt den Alias Datenpunkt für die lokale Temperatur am NSPanel */ const id1 = 'netatmo-crawler.0.stationData.1.temperature'; // bevorzugter DP const id2 = 'alias.0.Wetter.ORT.TEMP'; // alternativer DP // const idDst = '0_userdata.0.xyz'; const idDst = '0_userdata.0.NSPanel.eigen_TEMP'; var ts1 = getState(id1).ts; on({id: id1}, function(dp) { setState(idDst, dp.state.val, dp.state.ack); ts1 = dp.state.ts; }); on({id: id2}, function(dp) { if(dp.state.ts - ts1 > 360) setState(idDst, dp.state.val, dp.state.ack); });nun das Problem genauer erklärt.
Der Adapter netatmo-crawler bekommt hinundwieder kein aktuelles Wetter, warum auch immer (?). Nun soll, wenn der Datenpunkt daraus älter als 6 Minuten (360) ist, mit dem id2 Daten beschrieben werden.Das funktioniert auch mit diesem Script, Danke!
-
@paul53
danke und sorry für meine späte Rückmeldung.ich habe das Script jetzt folgendermaßen abgeändert
/* befüllt den Alias Datenpunkt für die lokale Temperatur am NSPanel */ const id1 = 'netatmo-crawler.0.stationData.1.temperature'; // bevorzugter DP const id2 = 'alias.0.Wetter.ORT.TEMP'; // alternativer DP // const idDst = '0_userdata.0.xyz'; const idDst = '0_userdata.0.NSPanel.eigen_TEMP'; var ts1 = getState(id1).ts; on({id: id1}, function(dp) { setState(idDst, dp.state.val, dp.state.ack); ts1 = dp.state.ts; }); on({id: id2}, function(dp) { if(dp.state.ts - ts1 > 360) setState(idDst, dp.state.val, dp.state.ack); });nun das Problem genauer erklärt.
Der Adapter netatmo-crawler bekommt hinundwieder kein aktuelles Wetter, warum auch immer (?). Nun soll, wenn der Datenpunkt daraus älter als 6 Minuten (360) ist, mit dem id2 Daten beschrieben werden.Das funktioniert auch mit diesem Script, Danke!
@australien sagte: 6 Minuten (360)
Da fehlen 3 Nullen (ts ist in ms).
-
@australien sagte: 6 Minuten (360)
Da fehlen 3 Nullen (ts ist in ms).
@paul53
Danke für den Hinweis, hatte nur bei JS geschaut.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden