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
    }
}

4762141677_b1a857bb0e_oMeerdere keren per week organiseer ik overleggen voor een van mijn projecten.  Altijd gaat het over voortgang, planning en knelpunten. En vaak ook over risico’s en kwaliteit. We proberen zo met het gehele team  een geweldig resultaat neer te zetten. Voor de opdrachtgever. Voor het ziekenhuis.

Onlangs las ik een tweet van Geert Klein Breteler die me aan het denken zette.

Zó waar, zó voor de hand liggend, maar nét zo vaak volledig over het hoofd gezien. De patiënt. Voorlopig zal ik mijzelf na ieder overleg die vraag stellen. En wie weet zet ik ‘m ook echt op de agenda.

Foto: ‘Doctor and Patient with PHRs’ van Andy De