Hoppa till innehåll

Daniel Holm Inlägg

Home Assistant kept losing the network every hour — it wasn’t the network

I haven’t really been written anything – at all – about Home Assistant, but I am indeed a lover of it. Been using it since.. well before the release versions had dates. 2015 maybe.

I have almost 8000 entities, and a lot of which I use for different tasks. And a lot I don’t, there just there. I had one issue, that I have been chasing for quite some time – network loss. Meaning I got notifications that different services went down – falsely. The services did not go down, but rather Home Assistant (HA) lost its connectivity.

This post is meant for others who might be in the same situation, or otherwise want to research symtoms in HA, or just want to learn something.

Disclosure: I’ve had some help with LLM:s going though my logs to speed things up. As well as summarize the steps taken.

Environment

Home Assistant OS as a VM under Proxmox, pfSense with VLANs, a mix of Wi-Fi, Zigbee, Z-Wave, Matter/Thread, BLE and USB/serial. ~7,000 entities.

The symptoms

Home Assistant logged services dropping and coming back, over and over. Services went down, my Minecraft servers was flapping. But what I noticed in the HA logs was:

The syncthing server 'https://192.168.XX.YY:20910' is back online
The syncthing server 'https://192.168.XX.YY:8384' is back online

397 occurrences in a few days. Same for Spotify, Last.fm, Uptime Kuma, 1-Wire and Frigate. It looked like a network problem. Maybe something about my VLANs, LACP, DNS (Adguard Home DNS), pfSense blocking something (Surricata/pfBlockerNG/Crowdsec?)

Why it wasn’t the network

Four observations however pointed away from the network:

  1. Syncthing is addressed by raw IP (192.168.xx.y) — no DNS involved. Yet it failed at the same moment as Spotify and Last.fm, which both require DNS.
  2. Uptime Kuma never alerted. ICMP to the HA host got through the entire time.
  3. dmesg showed no link flaps. Intel NICs (igb/e1000e), link up continuously for two weeks.
  4. Frigate on another VLAN X was hit just as hard as Syncthing on VLAN Y. Completely different paths through the firewall.

When DNS-dependent and DNS-independent connections die simultaneously while ICMP stays clean, packets aren’t going missing. The event loop is stalling.

Finding the cause

Step 1: Extract the timestamps

Recent HA (2025.11+) no longer writes home-assistant.log on HAOS — logging goes through journald. Pull it to a file first:

ha core logs -n 20000 > /share/ha.log
grep "back online" /share/ha.log | grep -oE "[0-9]{2}:[0-9]{2}:[0-9]{2}" | sort

The timestamps clustered clearly: starting at xx:32–33, ending around xx:40–41. Once an hour, roughly 8 minutes long.

The fact that the window didn’t start on a round minute was the key — cron jobs fire on whole minutes. This behaved like a timer inside HA, anchored to when Core last started.

Step 2: Clear the noise

The log was effectively unreadable. Two major sources:

  • hass_nabucasa.google_report_state logged a timeout every 55 seconds as normal keepalive behaviour
  • A runaway automation accounted for roughly 80% of all lines (fixed)
logger:
  default: warning
  logs:
    hass_nabucasa.google_report_state: warning
    homeassistant.components.automation: warning

Step 3: See who’s talking during the window

grep -oE "\[[a-z0-9_.]+\]" /share/window.log | sort | uniq -c | sort -rn | head -25

A broad spread across unrelated integrations — plus homeassistant.helpers.entity with 108 hits. That logger name means ”update took longer than the scheduled interval”, which is the signature of a saturated event loop, not packet loss.

Step 4: The proof

20:32:01  AOD analysis starts
20:32:09  Step 2: health_check_and_prune → 7,739 ms
20:32:11  last log line
          ...20 seconds of total silence...
20:32:31  syncthing "not available"
20:32:45  syncthing "back online"

Nothing is logged during those 20 seconds. Not a single line from any integration. That’s a blocked event loop.

The cause: Area Occupancy Detection ran health_check_and_prune on the MainThread every hour. The step took 7.7–11.4 seconds and blocked everything else while it ran.

Trials and errors

I also did have this reoccuring repair issues woth AOD. Stating the analysis took well over 500s rather than the limit of 180s. Let’s fix that another time, I thought. But here we were. As stated above, I have arount 7000+ entities in my HA instance. Pretty much everthing recording, beside some perticular stuff. Also I hade 6 days of retention days in the recorder settings. My DB was close to 6GB. Hence, I started to purge. Lowering the retention days. Going through the database, looking for clues for what entites had the post data rows – and perhaps connect them to AOD. And finally adding a lot of exluded entities and entity globs into the recorder settings.

I got my DB down to around 40% of previous size. But still the same hangup in HA, and the logs to prove it.

Top rows per entity:

# via root SSH on HAOS, port 22222
ssh -p 22222 root@<HA-IP> 'docker exec -i homeassistant python3' < query.py
import sqlite3
c = sqlite3.connect("file:/config/home-assistant_v2.db?mode=ro", uri=True)
q = """
SELECT m.entity_id, COUNT(*)
FROM states s
JOIN states_meta m ON s.metadata_id = m.metadata_id
GROUP BY 1 ORDER BY 2 DESC LIMIT 25
"""
for r in c.execute(q):
    print(r[1], r[0])

15 of the top 25 were AOD entities — over 2.5 million rows. Another user reported the same thing in AOD #467: AOD accounted for 30–50% of his entire database.

What actually fixed it

Short version: the number of sensors configured in AOD, not the database size.

Changehealth_check_and_prune
Baseline7,739 ms
After recorder DB went from 5.8 → 3.6 GB7,748 ms (unchanged)
After pruning AOD sensors1,354 ms

The cleanup in AOD

  • Removed all numeric sensors (temperature, humidity, etc.) — they contributed marginally to occupancy detection
  • Removed redundant sensors: LD2410 modules expose still_target, moving_target and presence. Only presence was kept, since it already derives from the other two.

That last one matters for a reason beyond performance: multiple overlapping observations of the same physical phenomenon skew the Bayesian result. When only moving is active, still pulls the probability down even though someone is clearly in the room.

Result: from ~9 minutes of flapping every hour to 7 timeouts per day, all recovering automatically within 10 seconds.

Pitfalls worth knowing

exclude only applies going forward. Excluding an entity stops new rows but deletes nothing that already exists.

repack deletes nothing. It only returns already-freed space to the disk. The order has to be:

  1. recorder.purge_entities with keep_days: 0
  2. recorder.purge with repack: true

Globs don’t match in the middle. sensor.*_decay_status misses sensor.x_decay_status_2. After reinstalling an integration, entities get a _2 suffix and slip straight through. End with a wildcard:

      - sensor.*_occupancy_probability*
      - sensor.*_decay_status*
      - sensor.*_presence_confidence*
      - sensor.*_evidence*

purge_entities doesn’t always finish in one pass. Run the call a couple of times and verify against the top-rows query.

Orphaned entities

A health check reported 1,215 ”zombies” out of 7,000 entities — 17%. Mostly old MQTT entities from integrations that had been removed.

MQTT discovery recreates those entities on every restart as long as retained messages sit on the broker. Deleting them in the HA UI doesn’t help.

Easiest with MQTT Explorer: connect to the broker, expand the tree, delete the branch recursively. From a terminal:

mosquitto_sub -h <broker> -u <user> -P <pass> -t 'homeassistant/#' \
  --retained-only -F '%t' -W 5 | grep -i <integration> \
  | while read -r t; do
      mosquitto_pub -h <broker> -u <user> -P <pass> -t "$t" -r -n
    done

An empty payload (-n) with the retained flag (-r) is what deletes it. Wildcards work when subscribing, never when publishing.

Takeaways

Silence in the log is the strongest clue. Nothing being logged for 20 seconds says more than any error message. Look for gaps between timestamps, not just for errors.

Timeouts that cluster in time aren’t network problems. If unrelated services on different VLANs, with and without DNS, all fail within the same second — it’s the process, not the network.

A window that doesn’t start on a round minute comes from inside HA. Cron fires at :00 and :30. A timer anchored to Core startup lands wherever it lands.

Clear the noise before analysing. INFO-level logging from automations and keepalives can bury everything of interest.

repack without purge_entities does nothing beyond compacting space that was already free.

Lämna en kommentar

Ubuntu utan Snap

Jag har kört Ubuntu sedan Breezy Badger (5.10). Det är över 20 år. Jag har sett distron växa, mogna och emellanåt hitta på något som vissa inte trivs med, satt sig i klavertet, lagt ned saker, osv.

Snap är det som jag numera sett som en besvikelse.

Missförstå mig inte: det är en god idé med program i egna sandlådor. Men det finns alternativ som fungerar bättre. Tex Flatpak och docker (mer för tjänster).

För många nya tror jag inte att det nödvändigtvis upplevs så farligt med Snap. Men jag som har privilegiet att köra Ubuntu på min arbetsdator, har det helt enkelt hämmat mitt arbete. Att öppna Firefox får gvfsd-http att äta upp mitt RAM och systemet bara fryser. Firefox kraschar.

Jag har nu tröttnat.

De program jag arbetar allra mest med sker via Firefox och Thunderbird. Sedan har jag Teams och Zoom som Flatpaks, LibreOffice som deb sedan tidigare. Men nu ska alltså Firefox och Thunderbird bort som snaps.

Lösningen jag fann är ubuntu-debullshit och den enkelt. Sedan kan en ju göra det på egen hand, om en vet vad en gör. snap och snapd ska bort.


Vad ubuntu-debullshit gör

Scriptet tar bort snaps helt, blockerar snapd från att smyga tillbaka via apt, sätter upp Flathub, installerar Firefox från Mozillas egna apt-repo (som DEB), och lämnar dig med en ren GNOME-desktop – ungefär som Fedora men med Ubuntu under huven.

Du kan dessutom välja hur stort ingreppet ska vara. På en och annan dator har jag kört allt. På min jobbdator ska jag bara få bort själva Snap.

Hitta det här: github.com/polhdez/ubuntu-debullshit


Innan du kör – säkerhetskopiera profilerna

Det viktigaste steget. Gör det innan du kör scriptet och med Firefox och Thunderbird stängda. Öppna program håller gärna lås på SQLite-databaser och du riskerar korrupta filer om du kopierar medan de körs.

Så stäng nu dessa program om de är öppna. Sedan kör vi en enkel backup. Då ligger dessa mappar sedan direkt i din hemmapp. Men rör dem inte: de är backupen.

# Firefox
cp -r ~/snap/firefox/common/.mozilla/firefox/ ~/firefox-backup/

# Thunderbird
cp -r ~/snap/thunderbird/common/.thunderbird/ ~/thunderbird-backup/

Kör scriptet

sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/polkaulfield/ubuntu-debullshit/main/ubuntu-debullshit.sh)"

Starta om efteråt om du gjort större ändringar. För Firefox och Thunderbird är det ok ändå.


Migrera Firefox-profilen

Scriptet installerar normalt Firefox via Mozillas apt-repo. Om det misslyckas – vilket kan hända beroende på nätverksproblem eller GPG-hicka – installera Flatpak-versionen istället:

flatpak install flathub org.mozilla.firefox

Starta Firefox en gång så den skapar en tom profil. Notera vad den heter (något i stil med ekijCXXXX.default-release). Detta finner du via hamburgarmenyn -> Hjälp -> Mer felsökningsverktyg. Där finns en rad som heter ”Profilmapp”. Notera detta. Särskilt ”default” kontra ”default-release”, exempelvis. Men i sin helhet hela exakta strängen.

Stäng Firefox.

Nu ska vi tömma den nya profilen och ersätts med din gamla:

rm -rv ~/.var/app/org.mozilla.firefox/config/mozilla/firefox/NYTTPROFILNAMN/*
cp -rv ~/firefox-backup/DINOLDAPROFIL/* ~/.var/app/org.mozilla.firefox/config/mozilla/firefox/NYTTPROFILNAMN/

Din gamla profil hittar du i ~/firefox-backup/ – det är mappen med ett namn som slutar på .default-release eller .default. Starta Firefox och allt borde vara på plats: flikar, lösenord, extensions.


Migrera Thunderbird-profilen

Thunderbird som Flatpak lägger sin data i ~/.var/app/org.mozilla.Thunderbird/.thunderbird/.

Titta först i din backup vilken profil som är aktiv:

cat ~/thunderbird-backup/.thunderbird/profiles.ini

Leta efter Default=1 – den profilen är det du vill ha med. Notera mappnamnet i Path=.

Kolla sedan vad Flatpak-Thunderbird skapade. Notera att det kan dyka upp en [InstallXXXXXXXX]-sektion i profiles.ini som pekar på en specifik profil med Locked=1den profilen är den som faktiskt körs, oavsett vad Default=1 säger. Kopiera in till den:

rm -rv ~/.var/app/org.mozilla.Thunderbird/.thunderbird/NYTTPROFILNAMN/*
cp -rv ~/thunderbird-backup/DINOLDAPROFIL/* ~/.var/app/org.mozilla.Thunderbird/.thunderbird/NYTTPROFILNAMN/

Starta Thunderbird. Konton, mail, kalender – allt ska vara där.

Om Thunderbird hamnar på fel språk: installera locale-paketet och byt språk i Settings → General.

flatpak install flathub org.mozilla.Thunderbird.Locale

Vad försvinner med snap?

Egentligen inte mycket du saknar.

Det enda värda att tänka på: kolla vilka program du nu har installerade och ersätt dem med Flatpaks. Installer därmed gärna Flatpak och Gnome Software.

Kolla snaps i terminalen genom

snap list

Resultatet

Systemet startar snabbare. RAM-användningen är rimlig. gvfsd-http sitter still. Firefox kraschar inte.

Det är ungefär vad man kan förvänta sig av en dator med 16 GB RAM, som i mitt fall.

Kommentarer är stängda

Modda gammal laptop med USB-C PD

USB-C är framtiden. Verkligen fantastiskt. Inte nog med att tre försök för att få i en USB-A är ett minne blott, eller att usb micro B bara är skitful, eftersom usb-c kan sättas vilket håll som helst. Därtill är det kapabel för allt möjligt kul i samma sladd. Glöm dockningsstationer; nätverk, bild, ljus och ström går i samma kabel. Ljuvligt.

En vill alltså ha USB-C.

I det här projektet har jag moddat en gammal laptop (ASUS E203N) för att kunna laddas via USB-C med Power Delivery (PD). Den ursprungliga laddkontakten (19V DC-barreljack) hade börjat glappa, och istället för att byta ut den bestämde jag mig för att ta steget in i sagt framtid.


Verktyg och material

  • USB-C PD-trigger modul (justerbar eller fast 20V, 60W+)
  • Lödkolv och tenn
  • Tåliga kablar (t.ex. Dupont, silikonlina)
  • Skruvmejsel, tålamod och multimeter

Steg för steg

1. Öppna och identifiera DC-ingång

DC-jacket brukar vara lätt att identifiera och sitter gärna lite separat med några  tydliga lödpunkter. Jag tog bort jacket och identifierade:

  • Mittstiftet = +19V
  • Ytterhöljet = GND

2. Förbered PD-modulen

Jag använde en mycket kompakt PD-decoy med två utgångshål:

  • Vänster: GND (-)
  • Höger: +19V (VOUT)

Dessa decoy-moduler finnes villigt här och var och brukar kräva att en lödat samman några pads för att bestämma vilken spänning porten ska ta emot och senare köra ut på moderkortet. I detta projekt var spänningen för laddaren ursprungligen 19V men jag tänkte att 20V när vara ok och testade med det, vilket datorn verkar acceptera utan problem.

3. Lödning

Jag använde två kablar på minussidan i parallell (för minskad resistans) och lödde dem direkt från PD-modulen till moderkortets lödpunkter. Korta kablar om kabel krävs, eftersom tjocka tar mer plats, och att det kan kräva en del ström genom dessa. Annars om möjligt löda direkt ihop modul och moderkort. Noggrann mätning med multimeter innan spänning kopplades in till datorn med endast laddaren inkopplad till modulen.

4. Funktionstest

Med USB-C-kabel inkopplad lyste modulen grönt och laptopen startade direkt. Batteriet laddar också korrekt.

5. Montering

Jag gröpte ur det gamla DC-hålet försiktigt med kniv och pressade in USB-C jacketet. En förvänansvärd lämplig passform. Locket kunde stängas nästan helt, och passformen blev överraskande bra.


Slutsats

Laptopen har nu fått ett nytt liv med USB-C. Ingen mer specialladdare – nu fungerar vilken PD-laddare som helst som ger 20V. Ett perfekt helgprojekt som kombinerar nytta med nörderi.

Vill du göra något liknande? Se till att du känner dig trygg med lödning och mätning, så är det här fullt genomförbart även för dig.


Kommentarer är stängda

Make it up as we go along

Jag växte upp till That ’70s Show. Älskar den än idag – för allt den är och inte är. Naturligtvis var jag tvungen att kasta mig över den nya That ’90s Show. Den var OK. Detta är inte en analys av endera.

Vad jag tyckte var underhållande var en slutscen varpå Red berättar för sitt barnbarn att ”alla är vilsna”; ”alla hittar vi på saker på resans gång”. Dvs. We all make it up as we go along. Menat att ingen har koll på saker och ting, utan det bara verkar så. Ibland blir våra hittepån bättre, andra gånger sämre.

Detta ställningstagande grep mig. Det är inget nytt, och jag har blivit tagen av det även tidigare. Det är ändock något väldigt vackert i det. Som barn själv upplever en sig nog många gångr i en position där en tror att ens föräldrar kan och vet allt. En dag kommer detta att leda till en förfärligt realiserande – att det är en lögn. Föräldrar kan inte allt; vet inte allt. Ingen förälder är perfekt. Men vi/dem har ingen koll på allt. Vi/dem försöker så gott vi kan.

Samtidigt som jag kan känna en viss lättnad över ett sådant realiserande – och utan någon insinuering att detta skulle innebära att ändå inte skall försöka, för det ska en så gott en kan – känner jag ett visst missnöje. Jag hade velat ha bättre koll. Varit säker på mer. Det finns givetvis saker jag är säker på, men likväl många saker jag är lite osäker på.

Jag hade nog helt enkelt trott att jag skulle ha bättre koll i och om livet vid det här laget än vad jag upplever mig ha. Och just av detta är samtidigt detta konstaterande så brilliant. Lite sådär ”ta’t lugnt” – We all make it up as we go along.

Kommentarer är stängda

Livet förändras

När jag senast faktiskt satt och skrev på ett blogginlägg var det 2017. Det är inte många år sedan. Jag skrev då i egenskap av en masterstudent som stod inför den sista tiden som detsamma. Det innebar ett bryt i ett liv jag hade levt sedan 2010. Studentlivet.

När jag nu skriver är jag på andra sidan katedern (i brist på andra ord). Jag undervisar vid Linnéuniversitetet. I mångt och mycket en ren dröm. Jag undervisar dem jag en gång varit. Jag får lära ut.

När jag började att blogga var det ett sätt att ge utlopp för saker som hände i mig. Jag var också en annan person. Nog har jag och den personen flera gemensamheter men också många skillnader. Jag har inte för avsikt att rada upp dessa, utan jag vill istället säga att mitt bloggande gick från just ett utlopp, en sorts terapi genom dialoger med mig själv, till att skriva saker som stöd och dela för andra. Vare sig det var bitvis politiska åsikter eller mina linuxtips.

Det som bloggen blev var att just dela med sig av vad jag kan. Ingången är i retrospektiv naiv. Jag kom senare att fråga vad jag över huvud taget kan. Inte mycket. Ju mer jag studerade ju mindre visste jag. Jag kom att skriva mindre. Inte bara för att jag blev allt mer av en perfektionist som avskydde allt jag skrev, för skrev gjorde jag, utan också för att jag blev fast i frågan vem fan är jag att tro att jag just vet. Att jag har något att dela. Jag tänker nu snarare att jag inte gör anspråk på att kunna så mycket, men kanske kan ändå mina perspektiv ge något. Varför är inte bara den tanken värd något i sitt eget?

Jag skulle på ett sätt vilja återuppta detta. Med vetskapen att jag många gånger tidigare sagt att jag tänkt bli mer aktiv. Jag tänker inte bli mer aktiv, men jag vill. Det är inte ett löfte utan en önskan.

Jag tänkte avsluta som jag startade detta inlägg. Livet förändras. Jag har levt länge som en student. Tillika en egensinnig ungkarl. Jag har gjort va fan jag vill när jag vill och hur jag vill. På sätt och vis gör jag det även nu. Jag bara vill göra annat. Och när det är, är av andra mer baserade på flera andras behov. Jag var en egoist och jag avskydde mig själv för det. För rädd att göra något åt det. Men livet förändras. Idag är jag pappa. Idag är jag egoistisk av andra anledningar. Idag avskyr jag inte mig själv. Livet förändras. Kanske är delar av det något att skriva om.

Kommentarer är stängda

Hej, det är jag.

Hej, det är jag.
Jag är inte den jag var för två år sedan.
Jag är inte den jag är idag.
Jag har aldrig varit den.
Aldrig varit jag.
Aldrig visat dig mig.

Ingen gör det.
De som gör sticker ut.
Stick ut och du ska mötas av fler.
Hämma inte dig själv för andra.
De är lika vilsna som du.
Det gör inget.
Livet är att hitta en väg.
Ingen vet om det var rätt.
Men när det går bra,
Nästan onaturligt bra.
Då är du förmodligen rätt.
Gjort bra val.
Går det utför kanske du ska byta väg.
Men erkänn dina egna brister före att lägga dem på andra.
Fråga dig själv.

Sover du dåligt?
Det är något du glömt eller undvikit att tänka på.
Det gör ont.
Men det är okej.
Känna är det fina i livet.
Känner du inget alls? Be om hjälp.
Att navigera.

Mina öron har hört sin beskärda del av skit.
De ska höra mycket mer.

Min mun har sagt lika mycket.
Kommer att säga lika mycket till.

Det är livet.
Du gör rätt, du gör fel.
Andra gör rätt, andra gör fel.
Lev med det.
Ta lärdom. Be om ursäkt.

Det är okej.
Gör något annat.
Det är okej.
Gör något nytt.
Ibland går det åt helvete.
Det är okej.

Låt det vara en brandövning.
Tänk varje morgon vad som kan gå fel.
Varje kväll åt vad som gick bra.

Kommentarer är stängda

Nytt liv?

Jag funderar på huruvida jag ska skaka liv i denna gamla blogg. Det fanns en gång något trivsamt i den. Som ett fönster till något. Samtidigt har jag skrivit så mycket skit. Kanske starta om. Å andra sidan är det underhållande med gammal skit. Även om det mycket möjligt är saker, texter, jag förkastar idag. Kanske; jag orkar inte läsa igenom.

Jag har iallafall fått installera om all för att få den att rulla igen. Om andan skulle falla på, så att säga. Nåväl. En sak i taget.

Kommentarer är stängda

Småländska vidder

Över vidderna i den småländska landsbygden, ovan de av grönska förgyllda trädkronorna, böljar de mest vackra bomullsmoln.

Jag somnar i Västergötland och vaknar i Småland. Till ett naturrike utan dess like. Med blomster och grönt guld.
Vid en enslig och grästäckt tågräls av det som en gång ingick i Sveriges ådror står ett rådjur i solen och nyfiket bevakar bussen som passerar.

Genom en ort som en dag blomstrade finns knappast något kvar som lever och sprudlar sedan kostnadseffektivitet ledde tågen att gå mer sällan. Plötsligt blev den ensliga orten än mer isolerad. Men det är sannolikt många sommarhus runt ortens lugna och magiska äng, sjö och skog.

Kommentarer är stängda

Ålder och internalisering

Jag blir nyfiken och känner en känsla av spänning när jag tänker på hur vi människor internaliserar, förkroppsligar, förnimmelse av erfarenheter. I detta fall funderar jag på naturen, klimatet och årstiderna.

Jag sitter på bussen ur Västervik. Jag har solglasögon på ty det är solsken. Naturen utanför är skimrande grön. Detta, av två saker vilka förknippas med sommar, känner jag inte alls den känslan av sommaren som jag gör under sommaren. För inte kan det deklareras som sommar längre. Nog kan det vara att det inte är lika varmt som det varit, men det är inte alltid särskilt varmt under den svenska sommaren. Kanske är det något med luftfuktigheten. Det kan vara så enkelt som att min vetskap om att det är september och därför inte sommar som skapar känslan.

Oavsett menar jag att det är ett förkroppsligande. Det känns liksom i mig. Jag vet med hela mitt jag att det är höst. Som att inget vore mera självklart. Hösten har mig alltid inneburit ett lugn. Denna höst är min 30:e. Luften är frisk och stärkande. Sommarens hätska är över. Jag kan inte jaga soltimmarna i parker på samma sätt. Det är okej.

Utanför fönstret är det vackert. I mitt sinne är allt lugnt. Idag är det val. Imorgon fyller jag 30 år. Min största rädsla är borgerligheten.

Kommentarer är stängda

Äntligen på väg.

Till tonerna till denna visa, framträdd av Håkan Hellström, och på en buss från min hemstad, samtidigt som den tidiga vårsolen går ner i väst.
Våren stundar. Det må ännu ligga snö på marken, de må ännu falla ny, men jag känner det inom mig. Jag sprudlar.
Är det hormoner som av rent naturbiolgiska skäl får mitt mående att förhöjas, eller är det livets tidigare vårers minne som gör sig till känna som en en kavalkad av känslor? Förnimmelse av kärlek och ungdom? Spelar det egentligen någon roll? Möjligtvis för att dra nytta av det under stunder av sämre mående. Men vill jag verkligen emulera detta rus i mitt hjärta?
Det är min 29:e vår som är påväg. Våren är den mest anmärkningsbara av samtliga säsonger, tillika terminer. Hela mitt liv, vad jag till minnes känner igen, har behandlat det vackra i våren. Om det är det grönskande livet, den svala vinden som ändå ger styrka och vilja nog att välja bort den där extra tröjan, eller kärleken som åter flödar, det vet jag inte och jag älskar allt av det likväl. Den okunskapen gör mig lycklig.
Till våren känner jag mig liksom alltid starkare, mentalt. Jag ser mig och mina medmänniskor med nya ögon, med nytt hopp. Som en frälsning av det vackra som socialt finns i såväl dig som mig.
Den nedgående solen, som idag skinit klart på en för övrigt felfri himmel, färgar nu den annars blå himlen skär. Och brännande ljus. Den talar till mig och ljumma nätter som stundar i kärlekens tecken och armar. Kärlek till mig, till dig. Kärlek som eros, amos och philia.
Jag bär våren i mitt hjärta, och således i mitt leende. I mina ögon brinner åtråvärda minnen och förhoppningar.
Det är min 29:e vår, och våren gör mig alltid stark. Liksom tanken av denna. Efter vinterns förintande lågmäldhet känner jag idag hur pulsen ökar. Detta är en början, och jag är okej.

Kommentarer är stängda