Server » Verwarming » Eigen installatie » Software
De intelligentie van het systeem:
de software!
Software
Zonder software, geen computergestuurde verwarming. En meestal wringt hier het schoentje. De meeste mensen kunnen leidingen leggen, kabels trekken en zelfs een electriciteitskast bekabelen, maar software schrijven...

Intelligentie


Het hoofdscherm van het programma
Dit console programma dat temperatuurwaarden inleest en verwerkt, de status van de kleppen bijstelt, de componenten van de verwarming controleert en nog duizenden andere taken uitvoert blijft constant draaien.

Tijdelijke data worden op een ramdisk opgeslagen (zodat de ingebouwde drive niet continu moet draaien). Bij shutdown wordt alles keurig naar de harde schijf overgezet. De webserver haalt zijn data van de ramdisk (het zijn veranderlijke waarden zoals de temperaturen en stand van het systeem). De webserver kan op zijn beurt de parameters van het hoofdprogramma wijzigen (via cgi-bin). Het is dus mogelijk de parameters van de verwarming te wijzigen met een webbrowser.

Ondertussen is de klassieke harde schijf vervangen door een Solid State Disk die heelwat minder verbruikt, sneller werkt, een hoge betrouwbaarheid heeft (geen bewegende delen). Tot nu toe is de capaciteit van een dergelijke schijf echter beperkt, maar voor computersturingen is dit geen probleem. Ik gebruik windows 98 als operating system, en die heeft genoeg aan 100MB.

Ik gebruik een echte programeertaal (powerbasic) en geen mietjes-taal. C++ was ook goed geweest. Wat de huidige generatie op school leert zijn programmeertalen voor mietjes, waarmee je eigenlijks niets kan aansturen, en waarbij de programmeertaal je volledig van het systeem afschermt. Programmeren lijkt wel snel te gaan (in drie muisklikken heb je een volledig programma), maar voor het echte werk moet je terugvallen op een echte programmeertaal dat DLL aanroepen kan uitvoeren. Het is allemaal begonnen met MFC (Microsoft Foundation Classes): een verpakking dat het eigenlijke werk onzichtbaar maakt, en met dotnet bouwt microsoft op dezelfde verkeerde weg. De programma's worden groter en groter, starten trager en trager op en kunnen minder en minder. De runtime module van notnet tweepuntnul is groter dan de iso-file van windows 98 (en kan veel minder!) Voorwaar, dit is de vooruitgang.

De source code wordt niet meer beschikbaar gesteld, omdat die soms aangepast wordt


Met een echte programeertaal kan je apparaten aansturen

Webserver

Op de computer draait er ook een webserver. Die geeft enkel de dynamische pagina's gerelateerd aan de verwarming weer. Alle andere pagina's (zoals deze) komen van een specifieke webserver. Het voordeel is dat het grote deel van de website online blijft bij het uitzetten van de verwarming.

De dynamische pagina's geven de stand van de kleppen, het vermogen van de circulatiepomp, de temperaturen en dergelijke weer. De status dat u rechts kan zien op de hoofdpagina is een dynamische pagina dat om de 30 seconden wordt bijgewerkt (als de verwarming ingeschakeld is). Grafieken behoren eveneens tot de mogelijkheden. Iedere keer dat er een dynamische pagina opgevraagd wordt, wordt het bijhorende programma gestart. Dit programma bouwt dan de pagina op. Het aangeroepen programma kan zelf bepaalde instellingen van de verwarming wijzigen.

Rechts mijn werkblad: één van de webpagina's van de lokale webserver, terwijl ik met VNC de software aanpas. De webserver + sturing van de verwarming zit in de kelder en draait onder windows 98, vandaar dat ik VNC gebruik om wijzigingen aan te brengen (vanaf windows 2000 of xp professional had ik de snellere RDP kunnen gebruiken).

Uit de broncode dat in het VNC scherm te zien is, merk je hoe eenvoudig het is om dynamische webpagina's aan te maken. De gebruikte programmeertaal is powerbasic. De compiler levert kant-en-klare exe modules die zowel gebruikt worden voor de controle van de branderinstallatie als voor het genereren van dynamische webpagina's.

Dynamische webpagina's worden op twee manieren gegenereerd: volledig door het aangeroepen programma zelf (bijvoorbeeld als het grafieken of tabellen betreft, dus veel gegevens en weinig tekst en formatering). Het aangeroepen programma genereert de volledige html kode van de pagina, terwijl de webserver voor de headers zorgt (de headers geven informatie over de pagina zoals zijn lengte, formaat-type en aanmaakdatum). Als het programma zelf voor de headers zorgt, dan genereert de webserver zelf geen headers (NPH of non-parsed headers heet deze methode).

Dynamische pagina's kunnen ook gegenereerd worden door templates te interpreteren (zoals bij PHP het geval is); eigenlijk kan je een soort PHP interpreter schrijven en je eigen kommando's in de source opnemen. Dit doe ik bij pagina's die veel tekst bevatten en slechts weinig variabele gegevens bevatten. De uiteindelijke gebruiker ziet enkel het uiteindelijk resultaat en kan niet weten hoe de pagina aangemaakt is geweest.

Dynamische componenten opnemen op een statische pagina kan ook door een script aan te roepen: de pagina is volledig statisch, maar de dynamische elementen worden door een script gegenereerd (javascript). De javascript-opdracht wijst naar een executable (cgi). Ik kies altijd de meest efficiente methode: ik hoef geen NET 2.0, geen IIS, geen runtime modules.

Ik heb een mini-informatiesite aangemaakt over het dynamisch aanmaken van webpagina's. Dit gaat van een gewone teller tot een volwaardige applikatie (een echte forum).

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's