Home Assistant op Raspberry Pi 5 met NVMe PCIe SSD

Onlangs Ondersteuning voor Raspberry Pi 5 is toegevoegd voor Home Assistant OS. Het nieuwe model is twee keer zo snel als zijn voorganger en voegt nieuwe features toe, zoals een PCIe-bus. De discussie begonnen over het gebruik van NVMe SSD's die rechtstreeks op de PCIe-bus zijn aangesloten.

M2 PCIe hats voor Raspberry Pi 5

Er zijn verschillende PCIe-hat's die je kunt kopen, maar er is nog geen officiële Raspberry Pi-hat, maar er is wel een officiële Raspberry 5-behuizing en Active Cooler.

De Raspberry Pi + Active koeler past in de behuizing als je de standaard ventilator verwijdert.

Een optie is om een SSD via USB3 aan te sluiten. Dit werkt prima, maar de prestaties zijn beperkt voor NVMe PCIe SSD's die een hogere doorvoer hebben dan SATA SSD-schijven.

De Raspberry Pi 5 brengt nu een tweede alternatief door het mogelijk te maken een NVMe SSD rechtstreeks op de PCIe-connector aan te sluiten.

Er bestaat een M2-hat die rechtstreeks op de PCIe-poort wordt aangesloten en ook in de originele Raspberry Pi 5-behuizing past, samen met de originele Raspberry Pi actieve koeler.

De Geekworm X1003 wordt bovenop de Raspberry Pi 5 en actieve koeler gemonteerd en maakt het zelfs mogelijk om de bovenklep te installeren (als dat gewenst is).

Installeer een NVMe SSD

De Geekworm X1003 is geschikt voor NMVe SSD's van 2242 (42 mm) en 2230 (30 mm). Er zit een moer op positie 2242, maar het kan zijn dat je een soldeerbout nodig hebt als je de moer naar positie 2230 wilt verplaatsen.

Op dit moment zijn de meeste nVME SSD's 2280, en voor dat formaat heb je een andere hoed nodig, bijvoorbeeld de Geekworm X1001 of X1002, maar die passen niet in de originele behuizing. Ik heb een goedkope gevonden SAMSUNG 2242 SSD bij Amazon. Dit model maakt gebruik van een functie genaamd HMB (Host Memory Buffer), die wat extra aandacht vereist, waar ik later op zal ingaan. Nadat we de SSD hebben gemonteerd (zorg ervoor dat de PCI FFC-kabel correct is geïnstalleerd) kunnen we doorgaan met de volgende stap.

Het voorbereiden van de installatie

Om Home Assistant OS te installeren gebruiken we de imager die standaard op de Raspberry PI OS-image is geïnstalleerd.

Om te beginnen hebben we dus een SD-kaart nodig Raspberry PI-besturingssysteem erop geflashed. Installeer dus niet Home Assistant OS op de SD-kaart.

We kunnen dit voorbereiden met behulp van de Officiële Raspberry PI-imager. Nadat de voorbereide SD-kaart in Raspberry Pi 5 is geïnstalleerd, kunnen we het Raspberry PI OS opstarten. Wanneer het besturingssysteem wordt gestart, zouden we moeten kunnen zien of de NVMe SSD wordt herkend. Om ervoor te zorgen dat de SSD probleemloos werkt, kunnen we de dmesg commando. Als er problemen zijn met uw SSD, ziet u de fouten in de bootlog die deze opdracht laat zien.

Mogelijke NMVe SSD-problemen identificeren

In mijn geval waren er een paar problemen die ik moest aanpakken. Ik moest …

  • … schakel PCIe-energiebeheer uit (dat vond ik tenminste een goed idee).
  • .. schakel de in pcie-poort op de Raspberry Pi
  • … inschakelen gen3 modus
  • .. verhoog de CMA-buffer om ervoor te zorgen dat er voldoende geheugen beschikbaar is voor de functie Host Memory Buffer

Als je helemaal geen NVMe SSD ziet verschijnen, dan kan dat betekenen dat...

  • …uw FFC-kabel tussen bord en M2-hat is niet goed aangesloten.
  • … je SDD is niet is ontdekt en en je PCIE_PROBE moet toevoegen aan je EEPROM-configuratie.
~# sudo rpi-eeprom-config --edit
# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1

Schakel PCIe-energiebeheer uit

We kunnen uitschakelen pcie energiebeheer. Als we weten dat de SSD altijd aan staat, zien we fouten als:

[22609.179027] nvme 0000:01:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Transmitter ID)
[22609.179031] nvme 0000:01:00.0: device [1d79:2263] error status/mask=00009100/0000e000
[22609.179035] nvme 0000:01:00.0: [ 8] Rollover
[22609.179039] nvme 0000:01:00.0: [12] Timeout

Uitschakelen pcie energiebeheer als root we moeten bewerken /boot/firmware/cmdline.txt en voeg toe pcie_aspm=uit naar de opdrachtregel.

Schakel de PCIe-poort op de Raspberry Pi in

Hoogstwaarschijnlijk is dit altijd nodig. Om de pcie-poort als root we moeten de config.txt met de kernelconfiguratie. Als root kun je het volgende bestand ook rechtstreeks bewerken: /boot/firmware/config.txt

In staat te stellen pcie voeg de volgende regels toe:

dtparam=pciex1 dtparam=nvme

Als u nog steeds fouten in uw logboek heeft, kunt u dit ook inschakelen gen3.

Schakel de PCIe gen3-modus in op de Raspberry Pi

De PCIe gen3 modus wordt niet officieel ondersteund, dus schakel deze alleen in als je SSD zonder deze niet goed werkt.

Om in te schakelen als root we moeten de config.txt voeg de volgende regel toe:

dtparam=pciex1_gen=3

Verhoog de CMA-buffer

In geval dat dmesg shows cma_toewijzing fouten zoals:

[    0.514198] nvme nvme0: Shutdown timeout set to 8 seconds
[    0.516601] nvme nvme0: allocated 64 MiB host memory buffer.
[    0.519481] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[    0.519494] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[    0.519506] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[    0.519513] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[    0.519523] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[    0.519530] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[    0.519539] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[    0.519546] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[    0.519735] nvme nvme0: 4/0/0 default/read/poll queues
[    0.525784] nvme nvme0: Ignoring bogus Namespace Identifiers
[    0.531980]  nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
[    0.519735] nvme nvme0: 4/0/0 default/read/poll queues
[    0.525784] nvme nvme0: Ignoring bogus Namespace Identifiers
[    0.531980]  nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
[    0.619473] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
[    0.619497] pci 0001:01:00.0: [1de4:0001] type 00 class 0x020000
[    0.619514] pci 0001:01:00.0: reg 0x10: [mem 0xffffc000-0xffffffff]
[    0.619524] pci 0001:01:00.0: reg 0x14: [mem 0xffc00000-0xffffffff]
[    0.619533] pci 0001:01:00.0: reg 0x18: [mem 0xffff0000-0xffffffff]
[    0.619605] pci 0001:01:00.0: supports D1
[    0.619609] pci 0001:01:00.0: PME# supported from D0 D1 D3hot D3cold
[    0.631479] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01

Ik had deze fouten vanwege de HMB-functie (Host Memory Buffer), die meer nodig had dan de standaardconfiguratie cma geheugen.

Om de cma geheugenbuffer Ik heb de standaardtoewijzing van 64 MB verhoogd naar 96 MB.

Als root we kunnen de config.txt voeg de volgende regel toe:

dtoverlay=cma,cma-96

Het is mogelijk om een groter blok in te schakelen, maar we moeten niet meer toewijzen dan nodig is. Om het gratis te zien cma geheugen als root kunnen we gebruiken:

# cat /proc/meminfo | grep -i cma
CmaTotal:          98304 kB
CmaFree:           15684 kB

Home Assistant OS voorbereiden op de NVMe SSD

Wanneer we onze SSD hebben geconfigureerd en eventuele problemen hebben opgelost, kunnen we de NVMe flashen met Home Assistant OS. Wij gebruiken de vooraf geïnstalleerde Raspberry Pi image die standaard op Raspberry Pi OS wordt geïnstalleerd en te vinden is in het accessoiresmenu. Let op: u kunt een aantal opties instellen waarmee u vooraf WiFi en de hostnaam kunt instellen. Andere instellingen moeten we handmatig instellen nadat het image is geflasht. Zorg ervoor dat de NVMe SDD correct is geflasht.

Aanpassen van de opstartvolgorde, kernelparameters en configuratie

Na het flashen van Home Assistant OS moeten we de opstartvolgorde aanpassen en ervoor zorgen dat Home Assistant OS hetzelfde gebruikt config.txt and cmdline.txt terwijl we ons voorbereidden op Raspberry PI OS. Er zijn bestanden in de afbeelding die we moeten aanpassen voordat we kunnen opstarten vanaf de nieuwe afbeelding, omdat het voorlopig nog niet mogelijk is om deze instellingen vanuit de gebruikersinterface toe te passen. Om toegang te krijgen tot deze bestanden moeten we de juiste partitie aankoppelen. In mijn geval werd de NVMe gebeld nvme0n1. Als u niet zeker weet wat de naam van uw schijf als root is, kunt u de opdracht gebruiken fdisk -l

~# fdisk -l
...
other drive info
...
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG MZAL4256HBJD-00BL2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: DFEFDCBD-D15E-4E82-B88C-5E6B46166328

Device           Start       End   Sectors   Size Type
/dev/nvme0n1p1    2048    133119    131072    64M EFI System
/dev/nvme0n1p2  133120    182271     49152    24M Linux filesystem
/dev/nvme0n1p3  182272    706559    524288   256M Linux filesystem
/dev/nvme0n1p4  706560    755711     49152    24M Linux filesystem
/dev/nvme0n1p5  755712   1279999    524288   256M Linux filesystem
/dev/nvme0n1p6 1280000   1296383     16384     8M Linux filesystem
/dev/nvme0n1p7 1296384   1492991    196608    96M Linux filesystem
/dev/nvme0n1p8 1492992 500118158 498625167 237.8G Linux filesystem

Om toegang te krijgen config.txt and cmdline.txt mounten we de eerste partitie:

~# mkdir boot
~# mount -t vfat /dev/nvme0n1p1 ~/boot
~# cd boot
~# ls

Gebruik dezelfde instellingen die goed waren voor Raspberry PI OS, en het zou goed moeten komen.

Ten slotte veranderen we de opstartvolgorde zodat de Raspberry Pi opstart vanaf de SSD. De onderstaande code laat zien hoe je dat doet:

# Edit the EEPROM on the Raspberry Pi 5.
sudo rpi-eeprom-config --edit

# Change the BOOT_ORDER line to:
BOOT_ORDER=0xf461
# This will try SD card first, then NVMe and finally USB

# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1

# Press Ctrl-O, then enter, to write the change to the file.
# Press Ctrl-X to exit nano (the editor).

Voor mij was het niet nodig om toe te voegen PCIE_PROBE. De volgorde wordt van rechts naar links gelezen. Dus 0xf416 zal eerst 6=NVMe proberen, dan 1=sd-kaart, dan 4=USB en ten slotte f=de lus opnieuw starten. Zoals je in het voorbeeld kunt zien, heb ik gebruikt 0xf461 als opstartvolgorde, omdat ik er de voorkeur aan geef gemakkelijk op te starten vanaf de SD-kaart, zonder de noodzaak om de NMVe SSD te verwijderen, als dat nodig is voor reddingsacties.

Meer documentatie over de opstartvolgorde-opties vindt u hier: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER.

Boot Home Assistant vanaf NVMe SSD

Wanneer de opstartvolgorde de NMVe als eerste geldige opstartoptie bevat, kunnen we proberen de geflashte NMVe SSD op te starten.

De Home Assistant-instantie moet initialiseren op http://homeassistant.local:8123. Het initialiseren kan enkele minuten duren. Als u over een geschikte HDMI-kabel en een toetsenbord en muis beschikt, kunt u toegang krijgen tot de Home Assistant CLI.

Om te zien of er fouten zijn, kunt u deze uitvoeren dmesg om het opstartlogboek te zien. Om te weten of er PCIe-runtimefouten zijn die u kunt gebruiken ha host logs -f. Wanneer u de CLI vanaf de console gebruikt, kunt u deze weglaten ha, Dus host logs-f of de host logs zou gewoon moeten werken. Als u SSH instelt bij het flashen van de afbeelding, zou u SSH ook moeten kunnen gebruiken om de CLI te openen.

Als alles in orde is, kunt u beginnen met het instellen van Home Assistant of het herstellen vanaf een back-up, maar zorg ervoor dat wanneer u herstelt vanaf een back-up dezelfde supervisorversie wordt gebruikt, anders mislukt het terugzetten van de back-up. Om vanuit de CLI naar een specifieke versie te updaten, gebruikt u:

ha supervisor update --version 2024.03.0

Om gewoon te updaten naar de nieuwste versie:

ha supervisor update

Het herstellen vanaf een back-up kan enige tijd duren als het back-upbestand groot is. De gebruikersinterface toont niet veel details over de voortgang. Voor meer details kunt u de supervisorlogboeken raadplegen. Als er iets mis is gegaan, kun je dat zien.

ha supervisor logs

En dat is alles: geniet van uw Home Assistant-installatie op Raspberry Pi 5 en NVMe SSD!

Home Assistent + `haproxy` +`LetsEncrypt`+TransIP

Deze post gaat over mijn (positieve) ervaring met haproxy als reverse proxy voor Home Assistant. Toegang op afstand is nodig als je Home Assistant van buiten uw thuisnetwerk wilt openen.

Als voorwaarde zullen we ook de poort moeten doorsturen 443(https) in onze router/firewall naar het gebruikte systeem en zorg ervoor dat we een geldige DNS A/AAAA- of CNAME-record hebben ingesteld die verwijst naar het openbare IP-adres dat wordt gebruikt om door te sturen.

Ik wilde LetsEncrypt certificaten hebben die worden uitgegeven met behulp van een DNS-challenge. Hiervoor heb ik een Raspberry Pi 3b-bord gebruikt waarop Rasbian (Debian) is geïnstalleerd. Verder installeerde ik docker, en haproxy.

Het installeren van de haproxy pakket is zo simpel als:

sudo apt-update and sudo apt install haproxy

Als voorwaarde zullen we ook de poort moeten doorsturen 443(https) in onze router/firewall naar het gebruikte systeem en zorg ervoor dat we een geldige DNS A/AAAA- of CNAME-record hebben ingesteld die verwijst naar het openbare IP-adres dat wordt gebruikt om door te sturen.

LetsEncrypt met DNS-01 challenge en TransIP API

In mijn geval worden mijn internetdomeinen beheerd door TransIP, en DNS-toegang heeft API-ondersteuning. In het portaal kunt je een API-sleutel aanmaken en de IP-adressen die u wilt gebruiken voor DNS-toegangen whitelisten. We gebruiken deze API om in te schrijven LetsEncrypt certificaten. Het grote voordeel is dat we wild card certificaten kunnen inschrijven of certificaten met interne namen die we niet op het internet willen tonen, en we hoeven poort 80 niet te openen!

Voor de inschrijving van certificaten met LetsEncrypt via de TransIP API heb ik de docker image (rbongers/certbot-dns-transip) van gebruikt Roy Bongers waar alle functionaliteit in zit.

Opzetten LetsEncrypt

Maak eerst de mappen aan /etc/letsencrypt, /var/log/letsencrypt and /etc/transip.

Maak als root bestand config.php in /etc/transip. Gebruik de onderstaande link voor het sjabloon:

https://gist.github.com/jbouwh/3b6042ed4ca1189e1f37d0f8ff7274e5#file-config-php-L1-L17

Je dient de verkregen TransIP API key en je TransIP gebruikersnaam in te plakken.

Zorg ervoor dat u uw sleutelbestand beveiligt met sudo chmod 400 /etc/transip/config/php dus dat is alleen-lezen voor root.

Om het certificaat voor de eerste keer in te stellen, maken we een bash-script (ik plaatste het in /usr/local/sbin):

https://gist.github.com/jbouwh/3b6042ed4ca1189e1f37d0f8ff7274e5#file-certinit-bash-L1-L10

Vervang de `–cert-name` en het wild card domein (-d certificaatnaam.example.com), en vervang het domein door een willekeurige domeinnaam die u bezit. U kunt de -D parameter meerdere keren. Voor elk domein wordt een dns-challenge aangemaakt.

Zorg ervoor dat het script uitvoerbaar is chmod +x certinit.bash.

Ren nu certinit.bash . Het downloadt de afbeelding en start een docker voor de installatie. Dit is interactief, u krijgt enkele vragen zoals uw e-mailadres.

root@docker01:/usr/local/sbin# certinit.bash
Unable to find image 'rbongers/certbot-dns-transip:latest' locally
latest: Pulling from rbongers/certbot-dns-transip
330ad28688ae: Pull complete
882df4fa64e9: Pull complete
07e271639575: Pull complete
2d60c5e17079: Pull complete
f54b294a6f71: Pull complete
6f27ea6ab430: Pull complete
0c8c5a3cd6a8: Pull complete
6436ec8cd157: Pull complete
350482e0cef8: Pull complete
fcb8169b6442: Pull complete
ba9658959877: Pull complete
b9d5ffb589b1: Pull complete
a368f8fc57ed: Pull complete
Digest: sha256:faec7bc102edf00237041fbce8030249fb55f300da76b637660384c353043bff
Status: Downloaded newer image for rbongers/certbot-dns-transip:latest
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): user@example.com (your email adres)


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

Account registered.
Requesting a certificate for xxxxxx and jjjjj
Performing the following challenges:
dns-01 challenge for xxxx
dns-01 challenge for jjjjj
Running manual-auth-hook command: /opt/certbot-dns-transip/auth-hook
Output from manual-auth-hook command auth-hook:
[2023-03-31 08:32:03.596791] INFO: Creating TXT record for _acme-challenge with challenge 'FfGM5VPKWKkwR-6ggUhlpoZlQ5-vPGK-JIy25tekb_E' [] []
[2023-03-31 08:32:06.782752] INFO: Waiting until nameservers (ns0.transip.net, ns1.transip.nl, ns2.transip.eu) are up-to-date [] []
[2023-03-31 08:32:08.625219] INFO: All nameservers are updated! [] []

Running manual-auth-hook command: /opt/certbot-dns-transip/auth-hook
Output from manual-auth-hook command auth-hook:
[2023-03-31 08:32:09.659195] INFO: Creating TXT record for _acme-challenge with challenge 'lP_hQVRODhVCiglLiNSZvNky9voGChnTyo407N_xRU4' [] []
[2023-03-31 08:32:12.628115] INFO: Waiting until nameservers (ns0.transip.net, ns1.transip.nl, ns2.transip.eu) are up-to-date [] []
[2023-03-31 08:32:13.659641] INFO: All nameservers are updated! [] []

Waiting for verification...
Cleaning up challenges
Running manual-cleanup-hook command: /opt/certbot-dns-transip/cleanup-hook
Output from manual-cleanup-hook command cleanup-hook:
[2023-03-31 08:32:16.459605] INFO: Cleaning up record _acme-challenge with value 'FfGM5VPKWKkwR-6ggUhlpoZlQ5-vPGK-JIy25tekb_E' [] []

Running manual-cleanup-hook command: /opt/certbot-dns-transip/cleanup-hook
Output from manual-cleanup-hook command cleanup-hook:
[2023-03-31 08:32:20.031682] INFO: Cleaning up record _acme-challenge with value 'lP_hQVRODhVCiglLiNSZvNky9voGChnTyo407N_xRU4' [] []


IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/xxxxxx/fullchain.pem Uw sleutelbestand is opgeslagen op: /etc/letsencrypt/live/xxxxxx/privkey.pem
   Your certificate will expire on 202x-mm-ss. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Je certificaat wordt aangemaakt in /etc/letsencrypt/live/{certname}.

Automatische uitgifte instellen

We willen het certificaat automatisch verlengen en haproxy bijwerken om het nieuwe certificaat te gebruiken. Het haproxy certificaat wordt geplaatst in /etc/haproxy/cert.pem. Om in te schrijven heb ik een bash-script gemaakt certrenew.bash:

https://gist.github.com/jbouwh/3b6042ed4ca1189e1f37d0f8ff7274e5#file-certrenew-bash-L1-L68

Zorg ervoor dat u de basecert parameter in het script. en plaats het als certrenew in /usr/local/bin/sbin en maak het uitvoerbaar met sudo chmod + x /etc/local/sbin/certrenew.

We moeten certrenew een eerste keer uitvoeren om ervoor te zorgen dat het haproxy certificaat wordt gemaakt.

Om ervoor te zorgen dat het elke dag ergens tussen 23.00 uur en middernacht draait, maken we er een cronfile (`/etc/cron.d/certrenew`) voor (zie link).

https://gist.github.com/jbouwh/3b6042ed4ca1189e1f37d0f8ff7274e5#file-certrenew-cron-L1-L9.

Herstart cron sudo systemctl restart cron

Wanneer het script wordt uitgevoerd, wordt gecontroleerd of het certificaat binnen 30 dagen verloopt, in dat geval wordt een nieuw certificaat aangevraagd. Als het proces succesvol was, wordt het certificaat bijgewerkt en opnieuw opgestart haproxy met het nieuwe certificaat.

Nu zijn we helemaal klaar, zorg ervoor dat je de logboeken controleert om te zien of de hele installatie correct werkt.

Instellen haproxy

Als laatste stap kan nu haproxy (/etc/haproxy/haproxy.cfg) worden ingesteld met het nieuwe certificaat.

Je kunt https://gist.github.com/jbouwh/3b6042ed4ca1189e1f37d0f8ff7274e5#file-haproxy-cfg-L1-L61 gebruiken als sjabloon voor uw configuratie. U moet de DNS-namen en het interne IP-adres van uw backend wijzigen. In mijn geval heb ik een Raspberry PI met een SD-kaart gebruikt en logging uitgeschakeld om ervoor te zorgen dat de SD-kaart langer meegaat. Als u een SSD hebt aangesloten, kunt u de logging wijzigen.

Zorg ervoor dat u ook installeert /etc/haproxy/dhparam.pem (zie de opmerking op de laatste regel van het configuratiebestand over hoe u dit kunt verkrijgen).

In de voorbeeldconfiguratie heb ik de statistiekenpagina ingeschakeld op https://{jouw_domeinnaam}/stats. Je kunt deze pagina gebruiken om de statistieken te bekijken. acl network_allowed_src src wordt gebruikt om te beveiligen dat de pagina alleen toegankelijk is vanaf interne IP-adressen. Zorg ervoor dat je de juiste IP-ranges invult die toegang moeten hebben.

Als je klaar bent, kun je het configuratiebestand testen met:

haproxy -f /etc/haproxy/haproxy.cfg -c

Als dat goed is, ben je helemaal klaar. Herstart haproxy om de nieuwe configuratie te laden met: sudo systemctl restart haproxy.

Nu heb je van buitenaf toegang tot Home Assistant. Zorg ervoor dat twee-factor-authenticatie is ingesteld om de toegang tot uw netwerk te beveiligen.

Elro Connects -Home Assistant

Ik ben bezig met een integratie voor Elro Connects. De integratie moet gebruikers met Elro Connects brand-, water- of koolmonoxidemelders in staat stellen deze met Home Assistant te integreren. Als u Elro Connects brandmelders bezit en graag wilt testen, kunt u de Elro Connects integratie met HACS toevoegen aan Home Assistant.

Voeg de volgende repository toe aan HACS https://github.com/jbouwh/ha-elro-connects/. Je moet Home Assistant opnieuw opstarten nadat je de aangepaste integratie hebt gedownload. Na de herstart zou je de integratie aan Home Assistant moeten kunnen toevoegen.

Voor elk alarm wordt een sirene entiteit gecreëerd. Als u deze inschakelt, wordt een testalarmverzoek verzonden. Je kunt de sirene uitzetten om een (test)alarm uit te zetten.

Laat me weten of je deze integratie leuk vindt. Als uw apparaat niet wordt ondersteund of niet correct werkt, laat het me dan weten!

Gas monitoring beschikbaar

De nieuwste versie van Omnik Data Logger (1.7.1) ondersteund nu het monitoren van gas verbruik (via MQTT) via het nieuwe Energie dashboard in Home Assistant. Werk Home Assistant bij tot versie 2021.9.x of hoger voordat je Omnik Data Logger bijwerkt, anders werkt MQTT niet meer.

Het nieuwe Home Assistant Energie dashboard met gas monitoring.

De eenheid voor gas verbruik is gewijzigd van m3 naar m³ om compatibel te zijn met Home Assistant. Gas verbruik per uur was m3/h en is nu m³/h.

Omnik datalogger DSMR P1 ondersteuning

Met de splinternieuwe release van Omnik data logger heb ik de ondersteuning voor de Slimme meter (DSMR) toegevoegd. Met een simpele P1 naar USB kabel kan Omnik data logger nu ook het verbruik van je slimme meter publiceren (inclusief gasverbruik). Met PVoutput kan op basis hiervan het verbruik worden vastgelegd inclusief netspanning zodat de netto energie (gebruikt/teruggeleverd) kan worden berekend.

De P1 adapter kan direct aan het apparaat met Omnik data logger worden aangesloten of via TCP. Ik heb hiervoor ser2net gebruikt zodat ik met meerdere verbindingen naar mijn slimme meter kan voa de P1 adapter (handig voor testen). Om dit mogelijk te maken heb je minimaal ser2net v3.5 nodig. Ik heb hiervoor een docker container geïnstalleerd met als image (jsurf/rpi-ser2net:buster). Met het toevoegen van de max-connections optie in de configuratie worden meerdere gelijktijdige verbindingen ondersteund.

3333:raw:600:/dev/ttyUSB0:115200 GEEN 1STOPBIT 8DATABITS -XONXOFF RTSCTS max-connections=3

/etc/ser2net.conf

Al je je slimme meter gegevens binnen Home Assistant wilt hebben, dan kan Omnik Datalogger hiermee de ingebouwde DSMR integratie vervangen. Door gebruik van MQTT kan Home Assistant alle tellerstanden e.d. automatisch herkennen. In de config file kun je (indien gewenst) de namen van de alle gemeten waarden hernoemen naar het Nederlands. Aanvullend krijg je via MQTT binnen Home Assistant ook direct verbruik, direct verbruikte energie en de werkelijke verbruiksdata te zien. Deze data wordt zoawel over MQTT als over InfluxDB gelogd.

HACS-standaard

Omnik data logger is toegevoegd aan de hoofd appstore binnen Home Assistant Community Store (HACS), dit betekend dat je Omnik data logger kunt vinden tussen de Automatiseringen.

Zorg er eerst voor dat je de AppDamon plugin hebt geïnstalleerd vanuit de officiele Home Assistant Add-on store.

TCPclient getest en werkend

Met dank aan Han Lubach is de tcpclient nu succesvol getest. Het lijkt er op dat deze client, gebaseerd op de logger van Wouter van der Zwan nu ook te gebruiken is met Omnik data logger.

Caching van handmatige invoer voor Home Assistant

Ik vond het vervelend dat Home Assistant de handmatige invoerselecties die ik voor mijn automatiseringen gebruik, herstelt. Om een aanhoudende status mogelijk te maken, heb ik een generieke scrit gemaakt die de status van deze invoer naar schijf verzilvert en deze automatisch herstelt wanneer Home Assistant opnieuw wordt opgestart.

De script is geschreven in Python en is geschreven om mee te werken AppDaemon.

De code laat zien hoe u de Home Assistant-integratie-API gebruikt die bij AppDaemon wordt geleverd.

Nieuwe release Omnik datalogger

Rekening https://GitHub.com/jbouwh/omnikdatalogger voor de nieuwe release (0,91-beta) van Omnik datalogger.

De laatste dagen lag omnikport plat. Ondertussen vond ik een tweede methode om toegang te krijgen tot je gegevens. Tijdens de storing het portaal op https://www.solarmanpv.com/portal was de hele tijd beschikbaar. Hier kunt u ook uw gegevens terugvinden. Dit bewijst dat omnikportal slechts een skin is en dat de gegevens bij solarman PV staan. Ik vond een API en werkende code die toegang geeft tot de realtime informatie. Deze API lijkt nauwkeurigere en tijdige toegang te geven tot de meest recente gegevens die zijn gelogd. Helaas is de API niet TLS-gecodeerd en gebruikt deze een gehashte MD5-wachtwoordlogin. Niet erg veilig. Toch is de alternatieve API voorlopig een goed alternatief. In het hoofdmenu staat nu een speciale pagina voor de omnik datalogger-software.

Inplugbare client

De nieuwe release wordt geleverd met een pluggable client voor logging. Dit maakt het eenvoudig om de logcode te wijzigen door alleen de configuratie te wijzigen.

Nieuwe client in ontwikkeling voor lokale logging

Bij oudere Omnik omvormers is het niet mogelijk om de data rechtstreeks van de omvormer te krijgen. Nieuwere omvormers luisteren op poort 8899 en kunnen direct reageren. De datalogger in de omvormer stuurt ongeveer elke 5 minuten een update naar een vast IP van een logging server in het Solarman datacenter. Het IP-adres waarop de omvormer inlogt is vast en kan niet worden gewijzigd via de interface, maar het is mogelijk om het bericht te onderscheppen door de server te simuleren met behulp van een NAT-regel en een statische route voor het IP-adres in uw netwerk. De code om de gelogde gegevens te ontleden is: al verkrijgbaar te gebruiken, dankzij Woutrrr. De software kan op een TCP-poort luisteren naar de omgeleide datalogger-sessies. De code is gebaseerd op: dit project van t3kpunk. Een tutorial hoe dit te gebruiken zal op deze site verschijnen zodra de code klaar is voor release. Lokale logging geeft meer gedetailleerde informatie dan momenteel beschikbaar is met behulp van de API's. Extra sensoren zijn:

  • AV Spanning* en Stroom en Frequentie (3 fase als uw model dit ondersteunt)
  • DC-spanningen en -stromen voor alle strings (max 2)
  • De temperatuur* van de omvormer

*Deze waarden worden ook naar PVoutput gestuurd. En elke nieuwe sensor komt beschikbaar via de MQTT-plug-in.

DSMR-integratie

Voor ouput naar pvoutput.org heb ik gepland om een integratie te maken voor de Nederlandse Slimme Meter (DSMR). Een adapter van de P1-connector naar een USB seriële interface is algemeen verkrijgbaar. Het integreren van merken is mogelijk om het werkelijke energieverbruik te berekenen. Natuurlijk zal al deze nieuwe sensorinformatie ook beschikbaar zijn voor de MQTT-uitvoerplug-in.

Storing omnik-portaal

De omnik portal en app en API zijn de afgelopen dagen niet beschikbaar geweest. Dus datalogging is op dit moment niet mogelijk. Ik heb ontdekt dat Omnik-dataloggers inloggen in de database van SolarmanPV. Het lijkt erop dat je nog steeds je live-uitvoer en geschiedenis kunt zien.

De URL is https://www.solarmanpv.com/portal/LoginPage.aspx en u kunt uw omnik-portalgegevens gebruiken. Ik ben bezig om de API werkend te krijgen, zodat de software kan worden bijgewerkt. Helaas is er alleen een werkende onbeveiligde API-interface. Er is een veilig alternatief, maar daar is een API-sleutel voor nodig. Ik ben hier mee bezig.

Nog even geduld, ik zal de komende dagen met een werkende update komen.

Groeten,

Jan

Dorst (pre) release voor de omnik datalogger

De eerste pre-release van de nieuwe Omnik datalogger is nu beschikbaar. Ik hoor graag of dit voor jou werkt! Als je opmerkingen of problemen hebt, laat het me weten!

Details vrijgeven

Versie: 0.9-alpha (pre-release)

Deze pre-release biedt een oplossing om de huidige staat van uw Omnik-stroomomvormer te integreren in uw favoriete domoticasysteem. Het script leest omnikportal.com uit met uw inloggegevens en stelt u in staat de realtime gegevens van uw zonne-installatie te verwerken.
De realtime output kan worden doorgestuurd naar pvoutput.com of via MQTT naar uw favoriete Home Automation-project worden gestuurd. De MQTT-implementatie ondersteunt de Home Assistant Automatic MQTT-detectie.

U kunt het script vanaf de opdrachtregel uitvoeren, systemd gebruiken of AppDaemon gebruiken, zodat u rechtstreeks met Home Assistent kunt integreren.

Veel plezier! Laat me je ervaring weten als je problemen hebt.

Je kunt de release downloaden hier.