Ik heb net de GitSync plugin voor Grav geinstalleerd en geconfigureerd. Die is recent vernieuwd naar versie 2.0. Met de wizard was het allemaal erg eenvoudig. Daarmee is het nu mogelijk om op een willekeurige computer pagina’s aan te passen of aan te maken en deze naar de repository te pushen. Die wijzigingen worden dan vanzelf opgehaald en gepubliceerd.

De browser interface in het admin panel werkt prima voor het bewerken van een enkele pagina, maar bulkbewerkingen zoals hernoemen, verplaatsen of tekstmanipulaties worden zoveel eenvoudiger als je dat kunt doen met een goede teksteditor.

Vandaag ben ik dan eindelijk van WordPress overgestapt naar het Grav CMS. Geen database meer, minder kans op exploits, een kleinere aanvalsvector, maar vooral: ik kan mijn content nu bijhouden als platte tekst. De komende periode zal ik de content van de oude en de nieuwe site vergelijken en waar nodig corrigeren. Kom je intussen zelf een fout tegen, neem dan even Contact op en laat het me weten.

Afbeelding van Chris Reading via Pixabay.

Vanochtend heb ik een eerste versie van de IndieAuth plugin voor Grav werkend gekregen. Binnenkort zal deze ook beschikbaar zijn via de Grav Plugin Manager.

Het is vakantie. Dus had ik weer wat tijd om aan mijn website te werken. De overstap van WordPress naar Grav wil ik echter pas maken zodra ik gebruik kan maken van een robuuste Webmention en Micropub functie. Voor die laatste is het nodig om te kunnen authenticeren. Daarvoor is het IndieAuth protocol beschikbaar en de eenvoudige implementatie daarvan via de website IndieAuth.com. 

Je kunt de benodigde configuratie daarvan eenvoudig opnemen in de content van je website, maar het is wel zo netjes en eenvoudig om dit met een simpele, basale plugin te kunnen doen.

Zo’n plugin was er nog niet, is vrij eenvoudig te maken en dus een mooie manier om mijn kennis van PHP en Grav in het bijzonder te vergroten. De hele maand december loopt bovendien de IndieWeb challenge nog, dus het leek me wel een idee om dat snel nog voor elkaar te krijgen. Met succes.

Grappig. Over de jaren heen heb ik een aantal keer geschreven over de snelheid van mijn Internetverbinding van dat moment. Nu is dat bij Ziggo 40Mbit/s download en 4Mbit/s upload. Dat is naar de huidige maatstaven niet heel veel, maar eigenlijk voldoende. Zeker omdat de meeste apparatuur in huis via Wifi is verbonden en daardoor eigenlijk toch geen gebruik kan maken van een hogere snelheid. En een abonnementje duurder kost momenteel direct €15,- per maand (of €180 per jaar) extra. Dat geld kunnen we prima voor andere dingen gebruiken.

Sinds de eerste keer die ik vermelde, in oktober 2003 was dat 256/64Kbits/s, kan ik nu dus 160 keer sneller downloaden en 64 keer sneller uploaden. Voor wat het waard is dan, natuurlijk.

Afbeelding van Gerd Altmann via Pixabay

(Dit artikel heb ik in het Engels eerder geplaatst op het openHAB forum en in de openHAB wiki)

Het probleem

De meeste Internet Service Providers (ISP) voorzien je van een dynamisch IP-adres.
Dit adres kan in de loop van de tijd veranderen.
Als je op dit adres vertrouwt, bijvoorbeeld om een computer binnen je thuisnetwerk te benaderen, wil je dit adres misschien in de gaten houden.

De oplossing

Websites zoals icanhazip geven je publieke IP-adres terug als platte tekst.
Deze kun je met openHAB prima verwerken en bijhouden in een item.
Een ‘rule’ (regel) bewaakt wijzigingen van het item en acteert daarop.

Voorwaarden

Voor deze toepassing is het nodig dat je de HTTP Binding al hebt geinstalleerd.

Opmerking: Wees aardig voor de website die je aanroept.
Roep deze liefst eens per 5 minuten aan, maar zeker niet vaker dan iedere minuut.

Configuratie

valid_ip.js

Dit script controleert of het antwoord van de website een geldig IP adres is.
Soms gebeurt het dat de pagina een foutmelding geeft.
Die wordt hiermee voorkomen.

// return valid IP or '-'
(function(ip) {

  // remove blanks first
  ip = ip.replace(/\s/g, '');

  // http://stackoverflow.com/a/26445549
  var rx=/^(?!.*\.$)((1?\d?\d|25[0-5]|2[0-4]\d)(\.|$)){4}$/;
  if (rx.test(ip)) {
    return (ip);
  }
  else {
    return "-";
  }
})(input)
// input variable contains data passed by openhab

demo.items

Bij het item kun je instellen hoe vaak je het wilt controleren.
Een keer per uur is eigenlijk voldoende.

// check for WAN IP address changes every 60 mins (3600 seconds)
String Network_WAN_IP "WAN IP address [%s]" <network> (Network) { http="<[http://icanhazip.com:3600000:JS(valid_ip.js)]"

demo.rules

Deze regel “gaat af” zodra het IP adres wijzigt.
Bij het opstarten van openHAB is de waarde leeg,
dus de eerste wijziging moet je negeren.

rule "Monitor WAN IP"
when
    Item Network_WAN_IP changed
then
    if (previousState != NULL) { // NULL when system started
      val currentState = Network_WAN_IP.state
        if (currentState == "-") {
            logError('MonitorWanIp', 'Unable to determine WAN IP')
        }
        else {
            logInfo('MonitorWanIp', 'WAN IP has changed to: ' + currentState)
        }
    }
end

demo.sitemap

sitemap demo label="Demo" {
    Frame {
        Text item=Network_WAN_IP
    }
}