NEWS
Objektwert einmal in der Woche wegschreiben (SQL Adapter)
-
Hallo zusammen,
ich möchte einen Objektwert nur einmal in der Woche über den SQL Adapter wegschreiben lassen. Ich dachte mir jetzt, dass ich einfach die "Blockzeit" dafür nutze, dass nur einmal in der Woche weggeschrieben wird, aber das funktioniert wohl nicht.
Wie muss ich diese Sache lösen?
Danke!
Gruß surfer ;-) -
Hallo zusammen,
ich möchte einen Objektwert nur einmal in der Woche über den SQL Adapter wegschreiben lassen. Ich dachte mir jetzt, dass ich einfach die "Blockzeit" dafür nutze, dass nur einmal in der Woche weggeschrieben wird, aber das funktioniert wohl nicht.
Wie muss ich diese Sache lösen?
Danke!
Gruß surfer ;-) -
@surfer09 Lege einen neuen DP an. Dort stellst du die Zeitdauer für die Datenhaltung ein.
Erstelle ein Skript oder Blockly welches einmal pro Woche (z.B. fester Tag + Zeit) den Wert in diesen Datenpunkt speichert.Ro75.
@ro75 Okay, über diesen Weg könnte man auch gehen :-).
Der jetzige Datenpunkt wird nämlich jeden Abend gegen 23:59 Uhr aktualisiert mit dem Tageswerk + bestehen Wert, somit hätte ich jeden Abend den Wert weggeschrieben, weil er sich ändert.
Also müsste ich jetzt noch einen DP anlegen, der den Wochenwert darstellt... Hmmm ich dachte, das könnte man mit einer Einstellung regeln. Man hat ja irgendwann zig DP für irgendwelche Wochenwerte. -
@ro75 Okay, über diesen Weg könnte man auch gehen :-).
Der jetzige Datenpunkt wird nämlich jeden Abend gegen 23:59 Uhr aktualisiert mit dem Tageswerk + bestehen Wert, somit hätte ich jeden Abend den Wert weggeschrieben, weil er sich ändert.
Also müsste ich jetzt noch einen DP anlegen, der den Wochenwert darstellt... Hmmm ich dachte, das könnte man mit einer Einstellung regeln. Man hat ja irgendwann zig DP für irgendwelche Wochenwerte.@surfer09 Nicht unbedingt. Du speicherst jeden Tag diesen Wert in diesen Datenpunkt. Ich mache es z.B. für WANINFOS (Down UP - Wochen und Monatsstatistik). Denn Wochenwert kann man dann über ein Skript abfragen.
function TrafficDiagramm7Tage() { var Ergebnis=0; sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="0_userdata.0.FritzBox.Traffic.Tag_IN"', function (result) { if (result.error) { console.error(result.error); } else { var now = new Date(); now.setHours(-168); sendTo('sql.0', 'query', 'SELECT from_unixtime(ts/1000) as ts, val FROM iobroker.ts_number WHERE ts >= ' + now.getTime() + ' AND id=' + result.result[0].id, function (result) { let text = result.result; for (let i = 0; i <= result.result.length-1; i++) { var vARow=text[i].ts; var vRow=text[i].val; Ergebnis=Ergebnis+parseFloat(vRow); } }); } });Mal ein kurzer Auszug.
-
@surfer09 Nicht unbedingt. Du speicherst jeden Tag diesen Wert in diesen Datenpunkt. Ich mache es z.B. für WANINFOS (Down UP - Wochen und Monatsstatistik). Denn Wochenwert kann man dann über ein Skript abfragen.
function TrafficDiagramm7Tage() { var Ergebnis=0; sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="0_userdata.0.FritzBox.Traffic.Tag_IN"', function (result) { if (result.error) { console.error(result.error); } else { var now = new Date(); now.setHours(-168); sendTo('sql.0', 'query', 'SELECT from_unixtime(ts/1000) as ts, val FROM iobroker.ts_number WHERE ts >= ' + now.getTime() + ' AND id=' + result.result[0].id, function (result) { let text = result.result; for (let i = 0; i <= result.result.length-1; i++) { var vARow=text[i].ts; var vRow=text[i].val; Ergebnis=Ergebnis+parseFloat(vRow); } }); } });Mal ein kurzer Auszug.
-
@ro75 Ja, das kann man sicherlich sogar ganz einfach abfragen, wenn man sich mit Java auskennt ;-) Da ich aber kein Java-/Programmierexperte bin, nutze ich gerne die einfachen Mittel und Wege.
-
@ro75 Okay, über diesen Weg könnte man auch gehen :-).
Der jetzige Datenpunkt wird nämlich jeden Abend gegen 23:59 Uhr aktualisiert mit dem Tageswerk + bestehen Wert, somit hätte ich jeden Abend den Wert weggeschrieben, weil er sich ändert.
Also müsste ich jetzt noch einen DP anlegen, der den Wochenwert darstellt... Hmmm ich dachte, das könnte man mit einer Einstellung regeln. Man hat ja irgendwann zig DP für irgendwelche Wochenwerte.@surfer09 sagte in Objektwert einmal in der Woche wegschreiben (SQL Adapter):
@ro75 Okay, über diesen Weg könnte man auch gehen :-).
Der jetzige Datenpunkt wird nämlich jeden Abend gegen 23:59 Uhr aktualisiert mit dem Tageswerk + bestehen Wert, somit hätte ich jeden Abend den Wert weggeschrieben, weil er sich ändert.
Also müsste ich jetzt noch einen DP anlegen, der den Wochenwert darstellt... Hmmm ich dachte, das könnte man mit einer Einstellung regeln. Man hat ja irgendwann zig DP für irgendwelche Wochenwerte.Nein - wenn Du den Datenpunkt nur einmal in der Woche füllst, dann hast Du nur einen Datenpunkt,der einmal pro Woche in die Datenbank geschrieben wird.
-
@surfer09 sagte in Objektwert einmal in der Woche wegschreiben (SQL Adapter):
@ro75 Okay, über diesen Weg könnte man auch gehen :-).
Der jetzige Datenpunkt wird nämlich jeden Abend gegen 23:59 Uhr aktualisiert mit dem Tageswerk + bestehen Wert, somit hätte ich jeden Abend den Wert weggeschrieben, weil er sich ändert.
Also müsste ich jetzt noch einen DP anlegen, der den Wochenwert darstellt... Hmmm ich dachte, das könnte man mit einer Einstellung regeln. Man hat ja irgendwann zig DP für irgendwelche Wochenwerte.Nein - wenn Du den Datenpunkt nur einmal in der Woche füllst, dann hast Du nur einen Datenpunkt,der einmal pro Woche in die Datenbank geschrieben wird.
@mickym Ich muss den aktuellen DP aber jeden Abend neu berechnen lassen. (Tageswerte werden addiert).
Damit ich den Wert nur einmal in der Woche wegschreiben lassen kann, müsste ich ja noch einen DP erstellen, der nur einmal in der Woche befüllt wird.
Ist das wirklich so vom System her vorgesehen? Ich meine, wenn man in seiner Installation mehrere DPs hat, die nicht täglich weggeschrieben werden sollen, müsste man ja zu jedem dieser DPs "Wochen-DPs" erstellen - wird das nicht irgendwann zu viel?
Ich hätte gedacht, dass es dafür im SQL Adapter eine Einstellung gibt, z.B. die Blockzeit. -
@mickym Ich muss den aktuellen DP aber jeden Abend neu berechnen lassen. (Tageswerte werden addiert).
Damit ich den Wert nur einmal in der Woche wegschreiben lassen kann, müsste ich ja noch einen DP erstellen, der nur einmal in der Woche befüllt wird.
Ist das wirklich so vom System her vorgesehen? Ich meine, wenn man in seiner Installation mehrere DPs hat, die nicht täglich weggeschrieben werden sollen, müsste man ja zu jedem dieser DPs "Wochen-DPs" erstellen - wird das nicht irgendwann zu viel?
Ich hätte gedacht, dass es dafür im SQL Adapter eine Einstellung gibt, z.B. die Blockzeit.@surfer09 Na eigentlich müsste es mit der Blockzeit klappen aber ich habs noch nicht versucht.
Du müsstest ja steuern, wann es mit der Protokollierung losgeht.
Wenn nur noch alle Woche protokolliert werden sollte müsstest Du da halt als Blockzeit:
604.800.000eingeben.
Bin mir nicht sicher, dass das dafür vorgesehen ist.Ansonsten halt einen Datenpunkt zum Summieren und dann die Summe einmal in der Woche wegschreiben. Ansonsten gibts da mehrere Adapter für solche Aufgaben (Statistik Adapter oder Source Analytics).
-
@surfer09 Na eigentlich müsste es mit der Blockzeit klappen aber ich habs noch nicht versucht.
Du müsstest ja steuern, wann es mit der Protokollierung losgeht.
Wenn nur noch alle Woche protokolliert werden sollte müsstest Du da halt als Blockzeit:
604.800.000eingeben.
Bin mir nicht sicher, dass das dafür vorgesehen ist.Ansonsten halt einen Datenpunkt zum Summieren und dann die Summe einmal in der Woche wegschreiben. Ansonsten gibts da mehrere Adapter für solche Aufgaben (Statistik Adapter oder Source Analytics).
@mickym Das mit der Blockzeit hatte ich schon getestet, der nimmt den Wochenwert aber nicht an. Sobald du ihn einträgst gibt's das hier:

Okay, ich habe jetzt aktuell nur diesen einen DP, der wöchentlich gespeichert werden müsste. Da könnte man es zur Not noch mit einem weiteren DP machen.
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

