jul 202020
 

In de categorie: het is vakantie en dus eindelijk tijd voor….

Ik had al een tijdje een viertal Avatar AWP07L Power Monitoring Plugs liggen. Afkomstig van Amazon in Duitsland, zijn het stekkerplugs die je tussen een apparaat (of apparaten) en het stopcontact plugt. Er zit een handmatige knop op om de plug aan en uit te zetten, maar uiteraard kun je ze ook via het netwerk bedienen. De plugs maken verbinding met je Wifi netwerk en als je er Tasmota op zet dan kun je de verbruiksdata via o.a. Home Assistant (met dank aan MQTT) uitlezen en de schakelaars op die manier besturen.

Het flashen van de firmware is even wat puzzelen, maar je hoeft gelukkig de plug niet uit elkaar te halen, het lukte mij allemaal OTA (Over The Air) op basis van deze instructies.

De pluggen zijn een stuk duurder (€6,- per stuk ipv €3,50 per stuk) dan de “oude” pluggen die ik heb van de Action. Maar dat is ook logisch gezien de verschillen:

  • Compacter  (veel!)
  • Gebruik van WiFi in plaats van 433Mhz voor de aansturing
  • Meten en doorgeven van energieverbruik

Met name dat laatste maakt ze ook zinvol als je per apparaat of groep apparaten (pc + printer + beeldschermen, een wasmachine, vaatwasmachine, oven etc) een beeld wilt krijgen van het energieverbruik. In dat geval zul je waarschijnlijk de schakelfunctie niet zo heel vaak gebruiken. Op dit moment heb ik ze aan een paar Raspberry Pi’s hangen die heel af en toe nog wel eens om onverklaarbare reden willen gaan hangen.

jun 212020
 
afbeelding reverse proxy

(c) linuxserver.io

Ik ben het afgelopen jaar een fan geworden van Docker. Zeker sinds ik een nieuwe Synology NAS heb die krachtig genoeg is om meerdere containers langdurig en betrouwbaar te laten draaien. Nu is het opeens heel gemakkelijk om bijvoorbeeld een Learning Locker LRS server te draaien (compleet met redis en mongo db server), om daarnaast de Xerte Online Toolkit (incl. Mysql database), Moodle (op basis van een aparte Mariadb database), de Redash dashboard server (met Progress database), rstudio server, een Nodejs server, Grafana, Jupyter Tensorflow Notebooks, kortom een scala aan online diensten te hebben draaien. Allemaal in hun eigen afgescheiden onderdeeltje, eenvoudig aan en uit te zetten, naar wens te updaten of met één druk op de knop weer te verwijderen. Met uitzondering natuurlijk van de data die ik wil bewaren en waarvan ik bij het aanmaken van de container aangegeven heb dat ze lokaal beschikbaar moeten zijn.

Toch heeft het ook wel een nadeel: ze draaien allemaal op dezelfde server.

Lees verder….

Serverproblemen

 Gepubliceerd door om 07:27  Internet, Persoonlijk
jun 102020
 

Zoals je wellicht gemerkt hebt is de site op het moment erg instabiel (niet voor het eerst). Ik kan niet echt achterhalen wat de oorzaak is, het lijkt erop dat ik er niet aan ga ontkomen om het geheel een keer netjes, opnieuw, vanaf de grond op in te richten omdat sommige onderdelen van de software alleen met kunst en vliegwerk bijgewerkt konden worden.

Daarbij wil ik dan meteen een aantal van de inrichtingskeuzes die ik 8 jaar geleden gemaakt heb, toen ik voor het eerst in mijn leven een virtual private server (VPS) account afsloot herzien. Dat betekent het investeren van tijd in iets wat er op zijn best voor zorgt dat ik hier weer de dingen kan doen die ik eerst ook deed.

Tot die tijd: excuses voor het ongemak!

mei 302020
 

Usually I write my blogposts in Dutch. Because there are still a lot of people in the Netherlands that have more difficulty reading English than Dutch. Sometimes I make an exception if the topic is more technical than otherwise. Because then, the chances of anyone other than myself reading the post increases a lot. This is one of those posts.

Last week, I wrote (in Dutch) about the computational thinking challenge of figuring out where we had not yet walked during this COVID-19 era. I also explained that that solutions, based on the tutorials by Fran Polignano had some room for improvement. The Strava client_id, client_secret and refresh_token were visible in the source code and the script did not use caching of the data it retrieves from Strava while Strava limits the number of calls you can make in a specific period of time (and it also is not good practice to not cache such data that changes no more than once a day).

After doing some searching around about possible solutions, I concluded that there is no real feasible “Javascript/client-side script only” option that hides that info. And caching of the data locally is possible, but would still be only half of a solution because every visitor would have to cache it locally and that could still result in more API call than allowed.

Lees verder….

mei 152020
 

De sportschool is dicht, buiten fietsen is nog geen optie zolang mijn pols nog niet 100% hersteld is, binnen fietsen doe ik regelmatig maar dat leidt tot dagen dat ik helemaal niet buiten geweest ben. En dat is ook niet prettig. Dus gaan we ’s avonds regelmatig wandelen, met z’n tweeën soms ook met de kinderen erbij. Ik neem dan altijd mijn Garmin Forerunner 35 mee. Die heeft ingebouwde GPS en een “wandelen” modus. Die zet ik aan en dan hoef ik er het hele uur of iets meer dat we lopen niet meer aan te denken. Als we thuis komen zet ik hem op stop en binnen een minuut is de wandeling, via mijn telefoon, beschikbaar via Strava. Nou gaat het me niet echt om mijn hartslag of hoe hard we lopen (al vinden ook daar soms discussies over plaats), het gaat me ook niet om het kunnen opscheppen over het aantal wandelingen (op Strava volg ik allemaal mensen die verder, vaker fietsen, zwemmen, lopen, wandelen). We vinden het gewoon leuk om wat variatie aan te brengen in de routes die we wandelen, dus kwam ook wel de vraag op: “welke delen van het dorp hebben we nog niet gehad?”

Iemand vroeg me onlangs naar voorbeelden van computational thinking. Nou dit is er eentje, hoewel het inderdaad eentje is waarbij een stukje programmeren gedaan is (deel twee van de vraag was namelijk of dat betekende dat er altijd programmeren bij kwam kijken). Het is een probleem/vraag die ik met ict opgelost heb.

De vraag herformuleren
De vraag “welke delen van het dorp hebben we nog niet gehad?” is niet zomaar te beantwoorden. Omdat ik “alle” wandelingen die ik gemaakt heb (ik denk dat ik er een of twee gemist heb) opgenomen heb, zijn die beschikbaar op Strava. Dus ik kan wel de vraag beantwoorden “welke routes in het dorp hebben we wél gehad?”.
Strava kan die kaarten laten zien. Maar alleen pér wandeling. Niet als totaaloverzicht.

Onderzoeken van mogelijke oplossingen
Gelukkig heeft Strava wel een API, een interface waarmee je data uit je eigen account kunt opvragen. En dan kun je zelf de routes op een kaart tekenen (zoals ik hierboven gedaan heb). Zoals bij bijna alles: als ik het kan verzinnen, heeft iemand anders het vast ook al eens verzonnen. Op Youtube staat een serie video’s van Fran Polignano die eerst een introductie geeft op het gebruik van de API (heel handig om eerst te bekijken!), daarna uitlegt hoe je de API in Python gebruikt en daarna met JavaScript. Bij die laatste gaat hij dan nog even door en legt uit hoe je je activiteiten automatisch op kunt laten halen én allemaal tegelijkertijd op een kaart kunt laten zien. Daarbij is hij dan ook nog eens zo vriendelijk om zijn code te delen via Github.

Lees verder….

mei 062020
 

Vroeger was machine learning iets wat je alleen op een stevige computer voor elkaar kreeg. Niet zo’n probleem want inmiddels is een gemiddelde laptop meer dan krachtig genoeg. Maar wat nou als je een sensor hebt die niet krachtig is? En die niet de beschikking heeft over een high-speed breedband internetverbinding om contact te maken met een systeem dat de herkenning kan doen?

Dan wil je het trainen van het model níet op je sensor doen, maar de herkenning wél op de sensor. Dan hoeft die sensor niet grote hoeveelheden observatiedata over de lijn te sturen, maar alleen een seintjes áls er iets te melden is.

Lees verder….

mrt 272020
 

Ze zijn zeker niet nieuw, maar de laatste weken zie en hoor je ze (om voor de hand liggende redenen) met enige regelmaat: virtuele koren of bands. Virtueel omdat de individuele muzikanten of zangers niet op dezelfde plek zitten en meestal ook niet op hetzelfde moment hun deel van het optreden opnemen. Dat laatste is zeker het geval in de situaties waarbij één muzikant meerdere partijen voor zijn/haar rekening neemt.

Ik kreeg de vraag of ik wist hoe ze deze video’s maakten. Het korte antwoord: nee, geen idee.
Het wat langere antwoord lees je hieronder.

Lees verder….

mrt 252020
 

https://twitter.com/jasperbloemsma/status/1242919061320806407

Stel…je kwam in Twitter ook in het gesprek over GIFs van favoriete films terecht (zie dit bericht) en je kwam daar een GIF tegen van een film en wilde die bewaren. Dan kan dat gemakkelijk als je die tweets op je telefoon bekijkt. Maar in de browser “gewoon op de desktop” dan kan dat niet. In de bron van de pagina kijken heeft dan niet veel zin, want daar is hij niet zomaar te vinden.

Gelukkig heeft daar iemand een site voor gemaakt: downloadtwittervideo.com
Zoals je uit de naam al hebt kunnen opmaken werkt het niet alleen op GIFs maar ook op “gewone” video’s op Twitter. Dus als je dit bericht van Doctor Who wilt downloaden om te bewaren, dan kan dat via die site.  Dan heb je dus een MP4, wil je toch liever (of toch ook) een GIF hebben om te bewaren of te gebruiken, dan kun je natuurlijk weer terecht bij ezgif.com
Het is dan een kwestie van uploaden en converteren, eventueel nog resizen zodat het bestand niet te groot wordt.  De HD MP4 was al niet groot (1,12MB), na conversie naar GIF werd hij 2,44MB maar door de afmetingen wat aan te passen en compressie toe te passen was het resultaat 594kB

mrt 232020
 

Oeps, dat is niet fijn “wakker worden” (ben al even op, maar ging net pas naar mijn site toe). Ik kreeg een grote waarschuwing dat mijn verbinding niet privé was, dat cybercriminelen mogelijk mijn gegevens zouden proberen te stelen.
Het eerste klopte, het tweede gelukkig niet. Ik schrok omdat ik dacht dat ik gisteren dat probleem al opgelost had. Ik maak gebruik van Let’s Encrypt voor het verkrijgen van gratis certificaten zodat je via https:// verbinding kunt maken met dit weblog. Niet dat dat zo noodzakelijk is voor het gros van de bezoekers (die lezen alleen) maar bedrijven als Google vinden het belangrijk en voor je vindbaarheid is het dan beter om het wél te doen. Nu het zonder vaste kosten kan, vond ik dat minder een probleem.

De certificaten van Let’s Encrypt moet je elke 3 maanden vernieuwen. Normaal gesproken gebeurt dat automatisch (na 2 maanden begint een script pogingen te doen deze te verlengen) maar het tooltje dat ik daarvoor gebruikte, maakte gebruik van een verouderde manier van authenticeren bij Let’s Encrypt (het draaide 3 jaar zonder problemen) en kon dus niet langer de certificaten vernieuwen. Als gevolg van wat eigenaardigheden van mijn server kon ik de tool niet zomaar upgraden. En moest op zoek naar een andere oplossing. Die had ik uiteindelijk gevonden, daarmee had ik de certificaten eenmalig ook “handmatig” kunnen vernieuwen (nu heb ik even lucht om de nieuwe tool ook automatisch te laten werken).

Ik was echter één belangrijk deel vergeten: ik had de Apache webserver niet opnieuw opgestart. Die bleef daarom nog gewoon een oud certificaat uitleveren. Dat vandaag verlopen was. En daarom kreeg je terecht bovenstaande foutmelding. Gelukkig was de oplossing eenvoudig even het opnieuw opstarten van de webserver (niet de hele server). En dus is het weer veilig hier. 🙂