NEWS
Empfangene Daten vom MQTT Server
-
@fiso sagte: das ganze (DP) erst in den Speicher zu schieben und dann später auf die SSD....
So macht es ioBroker. Du hat noch nicht beantwortet, ob Redis (schreibt voreingestellt alle 5 Minuten) oder states.jsonl (Schreib-Intervall ist konfigurierbar). Das sagt dir z.B.
iob status
-
@paul53 sagte in Empfangene Daten vom MQTT Server:
iob status
iobroker is running on this host.
Objects type: jsonl
States type: jsonlHab jetzt eine Dirty Lösung gefunden mit der ich mit umwegen das ganze entschärfen kann.
Ich greif einfach per Web-Api auf den ESP zu und speicher mir dann die Daten. Schön ist was anderes.....
-
@fiso sagte in Empfangene Daten vom MQTT Server:
Daher die Frage wie ioBroker die Daten speichert. Sofort in auf die SSD oder erst in den RAM.....
Nichtsdesto trotz wäre es cool (auch für andere sachen) wenn man zb die Option hätte das ganze (DP) erst in den Speicher zu schieben und dann später auf die SSD..... So könnte man mit Sensordaten experimentieren, also im Sekundentakt die Daten empfangen und dann diese weiterverarbeiten..... Sensordaten die im Sekundentakt kommen müssen ja nicht immer gespeichert werden....da du ja kein Plan hast von Datenverarbeitung sei es dir gesagt .. kein Betriebsystem scheibt die Daten von einm Externen Gerät DIREKT auf die Platte(SSD)
das MQTT Protokoll ist genau für solche Transfers konzipiert worden..
was machst du mit den Daten ... liegt da ein Trigger drauf der diese weiter verarbeitet ?? Grafana??
-
bei Tasmota gibt es ein Befehl
TelePeriode
damit kannst du das Sendeintervall einstellen.bin leider nur am Handy und kann dir nicht den passenden Link zeigen.
-
@fiso sagte in Empfangene Daten vom MQTT Server:
Aber Tasmota empfängt vom Zähler extrem Schnell die Daten und wenn ich die Daten dann an meinen MQTT Server übertrage geschieht das im Sekundentakt. Ich hab keine Möglichkeit das zu verlangsamen in Tasmotag. Ich vermisse die Option in ioBroker wo ich einstellen kann, nach wieviel Sekunden die Daten geschrieben werden.
Zeig mal das Skript auf deinem Tasmota-Gerät - sollte unter vermutlich unter "Tools" - "Consoles" - "Edit Script" zu finden sein.
Vermutlich sind da am Ende eine oder mehrere Zeilen zu finden wie
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
Also mit anderen Pfad (nämlich den du im MQQT wiederfindest), aber mit
=>Publish
Die zeile wird dafür sorgen das bei jeder Wertänderung (also etwa 1x die Sekunde) der Wert auch gesendet wird.Kommentierst du die Zeile aus (per
;
voranstellen), wird nicht mehr gesendet.
Dann erhältst du die Werte nur noch gemäß der eingestelltenTeleperiod
, also minimal alle 10 Sekunden, Default sind meine ich 600 Sekunden, also alle 10 Minuten.
Die Werte landen auch nicht direkt in einem Datenpunkt sondern es wird per JSON in den Pfadmqtt.0.tele.NameDeinesTasmotaDevives.SENSOR
landen wo du dir den dann selbst auseinander bauen muss (eventuell kann der Sonoff-Adapter das).
Da werden dann alle 3 Werte drin landen.Ich nutze z.B. beides, den Tele nutze ich für das Aufzeichnen und dann mit eCharts, den Datenpunkt mit Publish im Sekundentakt brauche ich für das Laden meiner Solarakkus und bei der Einspeisung.
Also du kannst parallel beides nutzen! Über
tele
wird der Wert auch jetzt schon kommen gemäß der eingestellten Teleperiod. -
@fiso sagte: die Option in ioBroker wo ich einstellen kann, nach wieviel Sekunden die Daten geschrieben werden.
Auszug aus Datei "/opt/iobroker/iobroker-data/iobroker.json":
"states" : { "type": "jsonl", "// type": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].", "host": "127.0.0.1", "port": 9000, "connectTimeout": 5000, "writeFileInterval": 30000, "dataDir": "", "options": { "auth_pass": "", "retry_max_delay": 5000, "retry_max_count": 19, "db": 0, "family": 0 }, "backup": { "disabled": false, "files": 24, "// files": "Minimal number of backup files, after the deletion will be executed according to backupTime settings", "hours": 48, "// hours": "All backups older than 48 hours will be deleted. But only if the number of files is greater than of backupNumber", "period": 120, "// period": "by default backup every 2 hours. Time is in minutes. To disable backup set the value to 0", "path": "", "// path": "Absolute path to backup directory or empty to backup in data directory" }, "jsonlOptions": { "// autoCompress (1)": "The JSONL DB is append-only and will contain unnecessary entries after a while.", "// autoCompress (2)": "It will be compressed when the uncompressed size is >= size * sizeFactor AND >= sizeFactorMinimumSize", "// autoCompress (3)": "Note that too low values here will cause the DB to be rewritten often.", "autoCompress": { "sizeFactor": 10, "sizeFactorMinimumSize": 50000 }, "// ignoreReadErrors": "If single lines in the DB are corrupted, they can be ignored without losing the whole DB.", "ignoreReadErrors": true, "// throttleFS (1)": "By default, the database immediately writes to the database file. Write accesses can be reduced using the throttleFS option.", "// throttleFS (2)": "Be aware that buffered changes will be lost in case the process crashes.", "throttleFS": { "// intervalMs": "Write to the database file no more than every intervalMs milliseconds.", "intervalMs": 60000, "// maxBufferedCommands": "Force writing after this many changes have been buffered. This reduces memory consumption and data loss in case of a crash.", "maxBufferedCommands": 2000 } } }
Per Voreinstellung wird maximal alle 60 s geschrieben: "intervalMs".
-
wie @bananajoe schon schrieb, prüfe bzw. zeige mal das Script.
hier nochmal die Beschreibung von der Tasmota-Seite
TelePeriod See current value and force publish STATE and SENSOR message 0 = disable telemetry messages 1 = reset telemetry period to firmware default (TELE_PERIOD) 10..3600 = set telemetry period in seconds (default = 300)
-
D
B
->sensor53 r
M 1
+1,3,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18 -
@fiso sagte in Empfangene Daten vom MQTT Server:
D
B
->sensor53 r
M 1
+1,3,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18Also wenn das wirklich alles ist, verstehe ich nicht warum der 1x die Sekunde senden sollte.
Du hast den Leser selbst gebaut - könnte noch an der Firmware, einen der Parameter beim Kompilieren oder ein anderes Kommando sein (auch wenn ich gerade nicht wüsste welches. -
ich würde vorschlagen in der Konsole von Tasmota mal folgendes eingeben, ob sich etwas ändert
TelePeriod 30
sollten dann 30 sec sein