Skip to content

ELV Gaszähler Integration in Home Assistant

Neulich konnte ich endlich in Zusammenarbeit mit einem Kollegen vom IOT Shop im Photovoltaik Forum meinen KLAX2.0 Optokoppler in Betrieb nehmen. Das Teil misst den Stromverbrauch am Stromzähler und überträgt seine Daten via LoRaWAN, von wo aus man sie mit einem TTN Mapper abgreifen und auswerten kann. Der zweite Energieträger bei uns ist Gas, was liegt also näher, als auch die Daten des Gaszählers abzugreifen und auszuwerten? Nun gibt es ja verschieden Methoden, die mit unterschiedlichem Bastelaufwand ebensolche Ergebnisse präsentieren. Auch beim Gas ist es so, daß eine Auswertung per WLAN wegen der Entfernung zum Zahler nicht in Frage kam. Auch ist wie beim Stromzähler selbst keine Stromversorgung vorhanden, was die Auswahl auch hier ziemlich eindampft. Ich hatte mich dann letztlich für den vergleichsweise günstigen LoRaWAN® Energiezähler-Sensorschnittstelle, C sowie den ES-GAS-2 Sensor entschieden, welche dann auch kurze Zeit später geliefert wurden. Der Zusammenbau wie auch die Montage gestalteten sich einfach, am Gaszähler muß nichts verändert werden, passende Adapter werden mitgeliefert. Für die Stromversorgung habe ich mir bei einen Battery Expansion Shield 18650 V3 besorgt, dafür ein Gehäuse gedruckt und zusammen mit einer 18650 Zelle an den ELV Zähler gesteckt. Das ist nun schon einige Tage her, der Stromverbrauch gestaltet sich recht zivil, man kann natürlich auch größere Akkupacks verwenden, sollte jedoch darauf achten, daß sich diese nicht abschalten, während der Zähler im Tiefschlaf ist, da sonst die Datenübertragung unterbrochen ist.

Für die Anleitung setze ich folgendes voraus:

  • Ein LoRaWAN Gateway ist vorhanden und eingebunden.

  • Es wird The Things Network (TTN) genutzt.

  • Homeassistant ist installiert und das Add-on Mosquitto broker ist hinzugefügt und aktiviert. Dieses Add-on muss wie folgt konfiguriert sein:
Der Screenshot zeigt die notwendigen Ergänzungen in der Konfiguration des mosquitto Plugins: Require Client Certificate auf "ono" und unter "customize" folgendes eingeben:"active:true" , "folder: mosquitto", require_certificate: false
Hier nun die Konfiguration im ttn Stack, als erstes eine Applikation anlegen, dann unter "Integrations" einen API Key sowie Username erstellen, abfragen und kopieren.

Der Screenshot zeigt die entsprechende Einrichtung der Einträge bei den "applications"
Bitte den API Key speichern und ebenfalls die anderen Informationen. Sie werden noch gebraucht. Der ELV-LW-ESI ist zu einer TTN Applikation hinzugefügt. Dazu den "Device Repository Formatter", den ELV zur Verfügung stellt nutzen:

der Screenshot zeigt die Auswahl des "Formatter Type": "Use Device Repository formatters" bei den Payload Formatters / Uplink
Für die nächsten Schritte, in denen unter anderem auf die Dateistruktur von Home Assistant zugegriffen werden muss nehme ich einfach das Add-on "File Editor", das einfach nachinstalliert werden kann. Wichtig für die folgenden Schritte: Änderungen in der Konfiguration vom "File Editor":

Der Screenshot zeigt die notwendigen Einstellungen in der Konfiguration des Editor Plugins.
Nun die Zertifikate von TTN in Homeassistant hinterlegen. Dazu laden wir die Zertifikatsdatei "minimal certificate list hier herunter: Root Certificates. Mit dem "File Editor" navigieren wir jetzt eine Ebene höher als /homeassistant und öffnen dann den Ordner "ssl". In diesem Ordner laden wir die ca.pem hoch.

Nächster Schritt: MQTT Bridge einrichten

Mit dem "File Editor" gehen wir wieder eine Ebene höher und öffnen dann den Ordner "share". Hier erstellen wir nun den Ordner "mosquitto" und darin dann die Datei "mosquitto.conf" mit folgendem Inhalt:

connection elv
    address eu1.cloud.thethings.network:8883
    cleansession true
    remote_username elv-lw-esi-xxxxx@ttn
    remote_password NNSXS.SupersicheresPasswort
    try_private false
    bridge_insecure false
    bridge_cafile /ssl/ca.pem
    topic # in 0 ttn/
Dabei setzt man in hinter remoteusername den oben erstellten Usernamen ein und hinter remotepassword den API Key.

Die /homeassistant/configuration.yaml wird am Ende um folgenden Code erweitert, der die "payload", also die Daten, die der ELV-LW-ESI liefert, für Home Assistant übersetzt:

# Anfang Gaszähler
    - name: "Gasverbrauch"
      state_topic: "ttn/v3/elv-lw-esi-xxx@ttn/devices/eui-xxxxxxxxx/up"
      value_template: "{{ value_json['uplink_message']['decoded_payload']['Energy_Data']['Energy_Counter'][0]}}"
      unit_of_measurement: "m³"
      device_class: "energy"
      state_class: "total_increasing"
      unique_id: elv_lw_esi
      device:
        identifiers: "elvlwesi"
        manufacturer: "ELV"
        name: "ELV Gaszähler"
# Ende Gaszähler
Folgende Anpassungen müssen darin noch vorgenommen werden:

Das state_topic entspricht der Kombination aus dem remote_username der Datei mosquitto.conf und der eui des ELV-LW-ESI in der Übersicht der angelegten Applikation:

Der Screenshot zeigt in der "Application Overview" unter "End Devices" die eui-*** des ELV-LW-ESI
Nach einem Neustart und Datenempfang vom Zähler sollte jetzt beim "Energie" Panel von Home Assistant der Gasverbrauch fertig zur Einrichtung sein: Dazu klickt man oben rechts im Drei Punkte Menü auf "Energiekonfiguration", woraufhin sich die unterschiedlichen Energiearten wie Strom, Gas, Wasser etc. konfigurieren lassen und nach dem Abspeichern in diesem Panel angezeigt werden.

Der Screenshot zeigt in Balkendiagrammen den Energieverbrauch bei Strom und Gas an.
Dir hat der Beitrag weiter geholfen? Diese Seite finanziert sich durch Spenden der LeserInnen. Wir freuen uns über Unterstützung via:

LiberaPay

BitCoin:

bc1qgthwzrszw48lw9jl8zjg94fp6w6xfkw0929vg0



oder PayPal


HowTo: Increasing the number of characters in posts in Mastodon 4.2.0

The Mastodon Logo
Das Mastodon Logo
The default character limit for new toots in Mastodon is 500. But what if you want to increase or decrease it? With Mastodon version 4.2.*, the previous instructions for adjusting or increasing the number of characters in posts are obsolete. Basically, the compose.js file is now called differently and must be edited in a different path. I show how, with a big thank you to drakfrid, whose instructions I have adapted accordingly:

We will edit three different files, two which set the character limit on your instance, and one which tells other clients or apps what your custom character limit is (for those that support it).

1. Switch to the mastodon user
su - mastodon

2. Edit the file live/app/javascript/mastodon/features/compose/component/compose_form.js in your favourite text editor,
nano live/app/javascript/mastodon/features/compose/components/compose_form.js

find the number 500 (it should be written in two different locations). Change both of them to whatever you like.

3. Edit live/app/validators/statuslengthvalidator.rb,
nano live/app/validators/status_length_validator.rb

and once again find the number 500 (should exist only once) and change it to the same number as you wrote in the previous file.

4. Edit live/app/serializers/rest/instance_serializer.rb,
nano live/app/serializers/rest/instance_serializer.rb

and find the row starting with
:languages, :registrations,
(should be the ~8th row), and change it so it includes ”:maxtootchars” after ”:registrations”, such as
:languages, :registrations, :maxtootchars,
where the full row now looks something like
:languages, :registrations, :maxtootchars, :approvalrequired, :invitesenabled

At the end of the same file, above where it says private, add the following code:
def max_toot_chars
   <your value here>
end

and change <your value here> to the same value you wrote previously.

5. Enter the live directory and recompile Mastodon,
RAILS_ENV=production bundle exec rails assets:precompile

6. Switch to the root user (with exit), and restart the Mastodon services,
systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

and optionally restart the streaming API server,
systemctl restart mastodon-streaming

And you’re done! You should now be able to see the new character limit on your Mastodon instance.

Debian: add-apt-repository Fehlerbehebung

Bei der Verwendung des Softwareinstallationsscriptes add-apt-repository - das im Paket software-properties-common enthalten ist - auf Debian 12 kommt es zu folgender Fehlermeldung:

sudo add-apt-repository ppa:bashtop-monitor/bashtop
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 362, in
    sys.exit(0 if addaptrepo.main() else 1)
                  ^^^^^^^^^^^^^^^^^
  File "/usr/bin/add-apt-repository", line 345, in main
    shortcut = handler(source, *shortcut_params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/shortcuts.py", line 40, in shortcut_handler
    return handler(shortcut, *kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 86, in init
    if self.lpppa.publishdebugsymbols:
       ^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 126, in lpppa
    self.lpppa = self.lpteam.getPPAByName(name=self.ppaname)
                  ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 113, in lpteam
    self.lpteam = self.lp.people(self.teamname)
                   ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'people'

Was ärgerlich ist, kann doch mit diesem Script eine Softwarequelle einfach zu den Systemquellen des Rechners hinzugefügt werden ohne sich groß mit den nötigen gpg Keys usw. befassen zu müssen - diese werden nämlich gleich mit heruntergeladen und installiert. Ein guter Komfortgewinn für faule User. ;-)

Die Fehlermeldung kommt von der fehlenden Python Bibliothek python3-launchpadlib. Nach Installation derselben funktioniert add-apt-repository einwandfrei.

Nach einem Hinweis von dieser Quelle bearbeitet.


Erweitere Domainblockade für FaceBook / META / threads.*

Der Facebook / META Konzern möchte mit dem #Projekt92 / #Barcelona / #threads.* an das Fediverse andocken. Erste Domains sind offenbar threads.net. (Wir verzichten auf die aktive Verlinkung) Nachdem zahlreiche Admins inzwischen erklärt haben, alle diesbezüglichen Aktivitäten und Domains zu blockieren, gibt es eine Sammlung von suspekten Facebook / META / threads Domains zum Download und anschließenden Import bei Mastodon. Wäre per regex sicher kürzer geworden, aber was soll's. Die Liste wird gepflegt und erweitert.

Die Vernetzung mit Meta soll nicht mehr automatisch erfolgen, sondern man kann sich jetzt dafür entscheiden, seinen Server mit "finanziellen Anreizen" mit Meta zu verbinden, wenn er "groß genug" ist.

Trotzdem lohnt es sich, diese Domains und IPs zu blockieren, nur für den Fall, dass sie es sich anders überlegen und um zu verhindern, dass META den Server ohne Zustimmung oder die der Nutzer:Innen ausspionieren.

Mehr dazu in diesem thread.

Wir sind seit dem 19. Juni 2023 im FediPact dabei und seit heute werden die og. Domains blockiert.

Screenshot: We block´d the #Barcelona Project aka threads.net and threads.instagram.com. We don‘t allow any #Facebook or #Instagram shit pollution at our #Instance.  If you are looking for a new home (instance/server) due to the whole Bruhaha over the #Meta move on the Fediverse, here is a link to the instances where you will be safe:  https://fedipact.online/  #FediBlockMeta  #Meta #Project92 #Threads #Barcelona #Mastodon #FuckMetaWe block´d the Project aka threads.net and threads.instagram.com. We don‘t allow any or shit pollution at our .

If you are looking for a new home (instance/server) due to the whole Bruhaha over the move on the Fediverse, here is a link to the instances where you will be safe:

https://fedipact.online/


Linux: Rechnerreset mit USB Watchdog

Dog in a yard in a colonia in South Texas Photo: Joshua Matthews
Dog in a yard in a colonia in South Texas
Photo: Joshua Matthews
License: Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Manchmal sinnvoll: Ein Watchdog. Wenn dieser nicht schon Bestandteil des Mainboards ist besteht die Möglichkeit entweder zu hoffen, daß der Software Watchdog einen Systemhänger erkennt und diesem noch mit einem reboot des Systems entgegentreten kann. Oder man verwendet einen USB Hardwarewatchdog, den es beim freundlichen Chinesen oder in Jeff's Gemischwarenladen relativ günstig gibt. Von beiden Varianten, die natürlich nicht die Ursache des Hängers lösen und - auch das muss gesagt sein, bei der USB Variante eventuell Probleme mit dem Dateisystem verursachen können, möchte ich hier kurz auf letztere eingehen. Denn manchmal ist ein Reset ausreichend, vor allem dann, wenn man nicht an den Rechner kommt, weil man zum Beispiel im Urlaub weilt und der Server daheim augerechnet dann die Grätsche macht.

Der Watchdog selbst besteht aus einer unscheinbaren Platine, an deren einen Ende ein USB Stecker sitzt und am anderen mit einer Stiftleiste versehen ist. Auf dem Stecker selbst sitzen neben ein paar kleineren Bauteilen zwei deutlich sicht- und beim Einstecken hörbare Relais. Geliefert wird das ganze spartanisch in einer Antistatiktüte, nochmal in einer weiteren Plastiktüte verpackt. Mitgeliefert werden zwei ausreichend lange Kabel für die erwähnte Stiftleiste. Kein Handbuch oder Installationsanleitung, was aber nichts macht, da dem aufmerksamen Besteller:*in die Links in der Artikelbeschreibung aufgefallen sind:

Englische Version der Überwachungs-Software Download: http://www.wfyl.cn/dzyj/PCWatchDog_VX_en.rar
Linux Treiber Download: http://www.wfyl.cn/dzyj/USBWatchdog_LINUX.zip
MacOS-Treiber-Download: http://www.wfyl.cn/dzyj/USBWatchdog_MAC.zip
Android Treiber Download: http://www.wfyl.cn/dzyj/USBWatchdogR_ANDROID.zip

Der Installationsvorgang im Terminal unter Ubuntu 22.04.2 LTS x86_64
Der Installationsvorgang im Terminal unter Ubuntu 22.04.2 LTS x86_64
Naja. Ich persönlich lade lieber nichts von Webseiten herunter, die in einer mir unverständlichen Sprache und zudem mit Adobe Flash Animationen versehen sind. Statt dessen fand meine Suchmaschine des Vertrauens heraus, daß es ein git Repository zu diesen Watchdogs gibt, das ein simples Python Script zur Verfügung stellt. Das Repo ist einige Jahre alt, dankenswerter Weise hat Wojciech NiziÅ„ski einen Pull Request eingestellt, der ein Update auf Python3 enthält. Die Dateien zieht man sich im Terminal auf den Zielrechner mit

gh repo clone niziak/usb-watchdog
in das gewünschte Verzeichnis, woraufhin sich die Dateien im Verzeichnis usb-watchdog befinden. Dort startet man nach der obligatorischen Kontrolle der Sicherheit des Quellcodes die Installation als User mit make, danach mit sudo make install das Kopieren der Programmdateien usw.

Der Stick selber wird in den Rechner gesteckt, danach verbindet man die Kabel mit den Mainboard Pfostensteckern für das HDD LED und den Resetschalter. Wichtig sind 2 Punkte:

  • Erst den USB Stick einstecken, dann die Pfostenstecker in eingeschalteten Zustand des Rechners verbinden. Ansonsten kann es sein, daß die Relais auf der Platine im Zustand NO / offen sind, wenn der Rechner eingeschaltet wird und man somit in einer Resetschleife landet.
  • Die Reaktionszeit / Heartbeat, die man in der Datei usb-watchdog.service unter [Service] in der Zeile

    ExecStart=/usr/bin/python3 /usr/local/sbin/watchdog.py --hb 360/dev/ttyUSB0
    einstellt, sollte nicht zu knapp bemessen sein, so daß eine kurzzeitige Rechnerlast nicht als Absturz interpretiert und ein Reset eingeleitet wird. Im Beispiel ist diese auf 360 Sekunden eingestellt, und bezieht sich auf den Watchdog, der als /dev/ttyUSB0 eingebunden wurde.

Quellen: David Gouveia
Hinweis: Einige der Links in diesem Beitrag beziehen sich auf Affilate-Links. Wenn Sie eines der verlinkten Produkte kaufen, unterstützen Sie mich. Das Produkt selbst wird Sie nicht mehr kosten als üblich. Vielen Dank dafür.

Note: Some of the links in this post refer to affilate links. If you buy one of the linked products, you support me. The product itself will not cost you more than usual. Thank you.

Blog Software Update

After a quick update of the PHP version from 7.* to 8.0.25 and a database backup, I had updated the Serendipity version of the blog software used here version from 2.3* to the 2.4.0 beta some time ago in order to be able to make a small contribution to its further development by reporting bugs. There were also some problems, especially with plugins, starting with the comments, the static pages and the Karma plugin. In the meantime, these problems have been solved and a few days ago, after a long development period, the stable version 2.4.0 was published and made available for download. Even after this release, the tireless development team does not sleep but reacts immediately to error messages. Thank you again for your work! This is what I have appreciated so much about Serendipity since version 0.9 2005, the version with which I wrote the first article on 19 November.

Aber ich habe doch gar kein Konto bei der Kreissparkasse...

Immer dann, wenn mir langweilig ist, schaue ich mal in den Spamordner. Neulich trudelte eine recht gut gemachte Mail rein, die von der Kreissparkasse zu stammen scheint. Allerdings mit zwei entscheidenden Fehlern: Weder habe ich ein Konto bei dieser Bank, noch heiße ich so, wie ich in der Mail angesprochen werde. Von der Absenderadresse, die nicht gefälscht war über die Metadaten der Mail (Hearder usw.) oder die Links, auf die darin verwiesen wird, will ich gar nicht erst anfangen:

Screenshot der Mail

Also gut, nach dem Klick auf "Weiter zur Kontrolle" geht es weiter im Browser:

Loginseite der ScammerIm weiteren Verlauf habe ich mal ein paar Phantasiedaten eingegeben, die auf den ersten Blick genau so plausibel erschienen wie diese Phishing Webseite und den ganzen Registrationsprozess durchlaufen. 

Das Ende vom Lied: 

Erfolgreicher Abschluss

Ein wiederholter Aufruf der Seite ist dann nicht mehr möglich, weil die Tracking Url, die durch das Anklicken des "Weiter zur Kontrolle" in der oben genannten email gesetzt wurde, eindeutig mit der Mailadresse an die die Mail ging, verbunden war. Mehr brauchten die Scammer nicht, um durch die Befragung Online-Banking-Zugangsdaten, Geburtsdatum, Telefonnummer sowie die Daten der Sparkassen-Card zu erfahren. In meinem Fall mit fiktiven Daten. Bis auf die Telefonnummer des BKA, die ich zur schnelleren Bearbeitung eventueller Nachfragen angegeben habe...

Problem bei mastodon Installation auf Ubuntu Server 20.04LTS

Weil ich hach einigen Versuchen nur per Zufall darauf gekommen bin - den Hinweis auf dieses Problem hatte ich so noch nirgendwo gefunden:

Q: I encountered a compilation error while executing RAILS_ENV=production bundle exec rails assets:precompile, but no more information is given. How to fix it?

A: Usually it's because your server ran out of memory while compiling assets. Use a swapfile or increase the swap space to increase the memory capacity. Run RAILS_ENV=production bundle exec rake tmp:cache:clear to clear cache, then execute RAILS_ENV=production bundle exec rails assets:precompile to compile again. Make sure you clear the cache after a compilation error, or it will show “Everything's OK” but leave the assets unchanged.

Die Lösung bei unserer Installation bestand allerdings darin, eine nodejs Version 16.x zu verwenden.

cronjob