troet.cafe ist Teil eines dezentralisierten sozialen Netzwerks, angetrieben von Mastodon.
Hallo im troet.cafe! Dies ist die derzeit größte deutschsprachige Mastodon Instanz zum tröten, neue Leute kennenlernen, sich auszutauschen und Spaß zu haben.

Verwaltet von:

Serverstatistik:

7 Tsd.
aktive Profile

Mehr erfahren

#mqtt

6 Beiträge6 Beteiligte0 Beiträge heute

Die Installation einer Wallbox haben wir genutzt, einen Shelly Pro 3EM in den Sicherungskasten zu integrieren.

Ich wollte endlich sehen, wieviel Leistung wir wirklich abrufen.

Der Shelly ist ein 3-Phasen-Messgerät. Die Leistung wird induktiv gemessen.

Die Installation war einfach, da spare ich mir ein näheres Beschreiben.

Doch der erste Eindruck war ernüchternd. keines meiner erhofften Ziele wurde unmittelbar erreicht (Bild 1)

Weder konnte ich sagen, wieviel Leistung WIRKLICH gerade von meinen Geräten gezogen wurde, noch wieviel in Netz an eigener Leistung eingespeist wurde.

Zum Glück messe ich den Solar-Ertrag separat und speichere diesen Wert in ein laufend (alle 5 Sekunden) aktualisiertes Reading.

Addiere ich nun die Active Power aller drei Phasen und addiere den Solarertrag, habe ich den gesamten Leistungsabruf.

Der Shelly wird in FHEM per MQTT eingebunden.
Am state-format etwas herumgefriemelt, ergibt sich auch eine akzeptable Anzeige (Bild 2).

Wozu brauche ich diesen Gesamtleistungswert? Ich kann damit das Zuschalten der Batterie viel besser auf den Leistungspunkt steuern. Vor dem Shelly fehlten mir immer ca. 50-150 Watt (+ Heizungskessel, dessen Messschalter mir zwischenzeitlich kaputt gegangen ist. Die Heizung selbst zieht zwischen 1500 Watt (Anzünden) und 150 Watt normaler Betrieb mit allen Pumpen etc.), die ich nicht gemessen hatte und die damit immer aus dem Netz bezogen werden mussten, obwohl Akku-Strom vorhanden war. Ganz sauber ist das noch nicht, da die Victron-Orions keine auf den Punkt gebrachte Leistung bereitstellen. Ein Orion kann bis zu 50 Watt mehr (oder weniger) Leistung liefern, als er grundsätzlich soll. Und auch während des Betriebes bleibt die Leistung nicht konstant. Insbesondere wenn die Orions heiß werden, und sie werden SEHR heiß, sinkt ihr Wirkungsgrad.

Daher investiere ich ja soviele Ideen in die Kühlung. Mittlerweile wird kein Orion mehr über 60°C warm, selbst die 50°C werden nur noch selten überschritten. Positiv ist, dass die Kühlung an der Energie-Ausbeute nichts negativ verändert hat. Denn der bessere Wirkungsgrad wird durch die Kühlung nicht aufgefressen. Die Geräte fahren also auf weniger Verschleiß und liefern sogar geringfügig mehr Energie als Strom, als durch die Kühlung "verloren" geht.

BTW: Der Energieverbrauch, der mit dem Shelly gemessen werden kann, interessiert mich allerdings gar nicht. Ich habe direkt vor unserem Zähler einen Sensor sitzen, der ca. alle 5 min den Zählerstand übermittelt. Da sich der Zähler innerhalb von 5 min nur wenig ändert, reicht mir das.

#shelly#fhem#victron

Hallo und guten Abend zusammen!

Für unser Projekt #mapleHome haben wir uns kürzlich einen neuen #homeserver gegönnt und bereiten und den Umzug unseres #Smarthome und einiger Apps/Tools vor. Bislang läuft unser #HomeAssistant OS auf einem Raspberry Pi 4 - soweit so gut.
Was mich persönlich immer nicht ganz so glücklich macht ist, dass die erforderlichen Add-ons und Zusatzdienste eben zu 100% vom gleichen System abhängen. So ist ja z.B. zigbee2mqtt ebenfalls "offline", wenn ein Update mit Neustart durchgeführt wird ...

Meine Idee:
Ich möchte zusätzliche Server/Dienste wie #zigbee2mqtt, den #MQTT Broker, Datenbanken, ... ein eigene VMs/Container auslagern. Dazu läuft #proxmox auf dem Server, für Home Assistant wird es eine VM geben und eben auch eine VM für #Docker.

Habt ihr es auch so oder so ähnlich umgesetzt? Bin ich gedanklich auf dem Holzweg? Oder würdet ihr noch weiter gehen?

Danke schonmal und allen einen schönen Sonntagabend!

Antwortete Roger Light

And this is a possible update. The command synopsis is now split up into multiple logical sections to make it easier to find related options and ignore ones you aren't interested in. As a consequence, it occupies about a full screen height.

I think it's clearer, but I'm concerned the large amount of screen use is offputting.

Any thoughts?

Parsing the Elite Dangerous Journal

I gave in and changed my event forwarding method in node-red for the Elite Dangerous Journal. This file is updated on various in-game events but in a way that makes it difficult to get new events only since last update. Another problem is that it’s not really a valid JSON file because it has one JSON per line but it’s not a valid JSON array. This is why it has to be parsed line by line and mashed together by event type (name) again to get the latest data for each event type per dump. Each event has it’s own timestamp by set by the game. The latest timestamp is now saved on the special flow const so node-red keeps the value in the “global” memory of the current flow:

msg.payload.event = "Journal";let newJournalTimestamp = flow.lastJournalTimestamp;Object.keys(msg.payload).forEach((key) => {  if (msg.payload[key].timestamp) {    const keyTimestamp = new Date(msg.payload[key].timestamp).getTime();    if (!flow.lastJournalTimestamp || flow.lastJournalTimestamp < keyTimestamp) {      // this entry is new - keep it. MULTIPLE events may have the      //  same timestamp so wait with reassigning so we don't skip      //  em or get the latest a 2nd time if nothing else changes.      // update the next latest timestamp if this is newer      if(!newJournalTimestamp || newJournalTimestamp < keyTimestamp) {        newJournalTimestamp = keyTimestamp;      }    } else {      // lastJournalTimestamp is newer, skip this      msg.payload[key] = null;    }  }});// make sure this is a valid date for the next timeflow.lastJournalTimestamp = newJournalTimestamp || new Date().getTime();// remove all nulled events from the payloadmsg.payload = Object.fromEntries(  Object.entries(msg.payload).filter(([_, p]) => p !== null));msg.payload.timestamp = new Date(flow.lastJournalTimestamp);return { payload: msg.payload };

So I do now keep track of the last read timestamp and reject every event that is older than the last read keeping the Journal dump smaller. This way I don’t have to try to keep track of the “latest” event to drag data from. Refuelling e.g. can happen from whopping 4 (or more) different events and it’s painful to compare all and check which one is the latest to keep track of the real current fuel levels for each tank.

Downside is I won’t get a full set of data for the current session any more if I have to reload my HUD app. This could be mitigated by using MQTT though where I could simply persist each event topic. That is already implemented and I can choose between SocketIO or MQTT in my app anyway.

https://beko.famkos.net/2025/03/29/parsing-the-elite-dangerous-journal/

Meshtastic - MeshCore - Reticulum: Warum Sideband (Reticulum) zurzeit meine №1 ist

Jedes der drei oben genannten (Mesh) Systeme hat sicherlich seine Vor- und seine Nachteile. Reticulum kombiniert allerdings einige der (mir!) wichtigen Funktionen:

Es legt einen großen Wert auf Sicherheit (Verschlüsselung). Wer also Messenger wie #Session, #Threema oder #Signal statt #WhatsApp bevorzugt, lieg mit Reticulum (Sideband) sicherlich auch nicht falsch.

Reticulum ist dezentral (!) und selbstorganisierend. Andere Mesh-Netzwerke, die neben der Funkanbindung (LoRa), noch Zugänge untereinander über einen #MQTT-Server anbieten, funktionieren nur, solange diese Server online und nicht überlastet sind. Sideband lässt sich auch ganz einfach über das Internet nutzen und wenn dies ausfallen sollte, gibt es ja auch noch

LoRa (Funk) Verbindungen für Not- und Krisensituationen. Es lassen sich so einfach und mit kostengünstiger Hardware lokale Netzwerke aufbauen.

Ob ich also an einem PC mit Interzugang sitze, oder mein Smartphone mit Mobilfunkanbindung (oder eben auch mit einem über Bluetooth verbundenen LoRa Device) nutze, ich bin dann Teil des Netzwerkes und kann auf all diesen Geräten erreicht werden und Nachrichten versenden.

Ich weiß jetzt nicht mehr genau, wer diese Frage eigentlich gestellt hatte, aber ich hoffe, diese Erklärung hilft weiter. 😀