Coen Martinus

Coen Martinus

site eigenaar :-)

%AM, %25 %049 %2014 %00:%dec

Van CSV naar MT940

 

Menig ZZP'er met een privérekening (of administrateur hiervan) zal er mee te maken hebben. Je voert je boekhouding in één van de vele online (of offline) boekhoudpakketten. Wat is nou handiger om dan je bankmutaties in te kunnen lezen en automatisch te laten afletteren?

Je boekhoudpakket accepteert veelal geen CSV bestanden en je bank biedt geen export voor MT940 bestanden.

De opties die dan resteren zijn of ouderwets handmatig de bankmutaties boeken (tijdrovend) of overgaan naar een zakelijke rekening (duur).

Om op dit probleem in te springen heb ik onder de handelsnaam CoenFin Software een programma (MT940 Creator) ontwikkeld om CSV bestanden om te zetten naar een MT940 bestand. Dit met een paar muisklikken binnen enkele seconden. Je selecteert een CSV bestand. Het programma herkent het CSV bestand. Vervolgens kies je het soort MT940 bestand wat je wil genereren en je MT940 bestand wordt gegenereerd.

mt940creator

 

Het programma bewaart het eindsaldo en periode van de laatste import zodat je gewaarschuwd wordt voor een overlap en je bij een volgende import geen nieuw saldo hoeft in te voeren. Thans worden o.a. de volgende CSV bestanden herkent (ING Bank, Rabobank, Triodus Bank, SNS, ASN, Regiobank, Leaseplanbank en Paypal).

Het programma is daarnaast onder andere getest met BizzCounter, Exact Online, Davilex Online en Domus.Het programma is hier te downloaden. Tot 5 mutatieregels (per conversie) is het programma gratis. Voor slechts € 25,- exclusief BTW koopt u een (eenmalige) licentie voor onbeperkt aantal regels.

Aanvullende CSV bankbestanden kunnen in overleg altijd worden toegevoegd aan het programma.

 

%PM, %12 %571 %2014 %12:%apr

Auditfile Converter

 

Auditfiles zijn naast exceldocumenten een van de meest door mij gebruike bestanden. Auditfiles bieden de mogelijkheid om gegevens tussen administratieve systemen middels een standaard format uit wisselen. Dit is handig omdat geen specifieke kennis nodig is van verschillende boekhoudpakketten. De gegevens kunnen dan in een eigen analyse pakket nadere worden geanalyseerd.

Het initiatief voor de ontwikkeling van auditfiles lag dan ook bij de belastingdienst. De eerste versie verscheen in 1999 in de vorm van een ASCII tekstbestand (ADF). Later verscheen de opvolger in de vorm van een XML bestand, zijnde de XAF auditfiles. De eerste versie hiervan was de 2.0 versie. Thans ligt de ontwikkeling meer bij de commerciële partijen. De huidige versies zitten in de 3.x reeks. Waarbij de meest recentste versie 3.2 is.

Naast de belastingdienst zijn auditfiles ook zeer handig voor andere partijen zoals accountants en adviseurs. De belastingdienst heeft in dit kader een Auditfile Viewer ter beschikking gesteld welke gratis te downloaden is via softwarepakketten.nl. De belastingdienst is echter wel gestopt met de ontwikkeling van de viewer in 2008. De laatste versies (3.x serie) van de auditfile worden daardoor niet ondersteund. Commerciële alternatieven zijn er wel, maar vaak wel relatief aan de prijzige kant.

Voor de fervente gebruikers van de Auditfile Viewer heb ik nu een converter op mijn site geplaatst waarmee o.a. de XAF 3.x auditfiles weer omgezet kunnen worden naar XAF 2.0 of zelfs ADF.

 

%PM, %18 %963 %2014 %22:%mrt

Waar is orov.ini?

 

Ik heb van enkele gebruikers van de orov update door gekregen dat orov.ini niet gevonden kan worden of dat de updater geen effect heeft. Dit terwijl andere en ik zelf geen enkel probleem hebben met het uitvoeren van de updater. Wat is de oorzaak hiervan? Na wat gezoek en ge-experimenteer weet ik de oorzaak hiervan.

Probleem:

In windows kan bij de installatie (en als er achteraf gebruikers aangemaakt worden) de keuze gemaakt worden tussen een standaard gebruikersaccount en een administrator gebruikersaccount. Voor degene die een gebruikersaccount hebben met administrator rechten werkt de updater zonder problemen. Voor de eerste groep werkt de updater niet.

Vanaf Windows 7 mogen gewone gebruikersaccounts niet meer zomaar bestanden muteren welke staan onder c:\program files\ of c:\program files (x86)\. Oudere programma's zoals Offline Rekening Overzicht doen dit echter wel. Windows lost dit op door deze programma's naar een virtuele bestandslocatie te laten schrijven.

De feitelijke database en orov.ini staan daardoor niet in onder de program files maar op een andere locatie. Dit betreft de volgende locatie:

C:\Gebruikers\inlognaam\AppData\Local\VirtualStore\program files (x86)\Offline Rekening Overzicht\

Hierbij is 'inlognaam' uw gebruikersnaam welke u op uw Windowscomputer gebruikt.

Oplossing:

Mocht de update dus niet werken conform de updater blog of krijgt u de melding dat het orov.ini niet gevonden is zoek selecteer dan ook bovenstaande map (rekening houdend met uw gebruikersnaam of inlognaam) in plaats van de in de update blog genoemde c:\program files (x86)\Offline Rekening Overzicht\.

Ook als u regelmatig backups wilt maken en u heeft een standaard gebruikersaccount dan is het dus ook goed te beseffen dat uw gegevens dus niet onder program files staan, maar onder de bovenstaande locatie!!

 

locatie voor gebruiker 'test':

orovvirtueel

 

 

AppData Map niet zichtbaar?

 

De map is standaard door Windows verborgen. Dus als u de map AppData niet kunt vinden doe dan het volgende binnen uw gebruikersmap:

mapaan01

Kies organiseren en dan 'Map- en zoekopties'. U krijgt dan:

mapaan02

 Kies voor tabblad 'Weergave' en scroll naar 'verborgen mappen en bestanden'. Zet deze op weergeven.

 

%PM, %30 %917 %2014 %21:%jan

OROV updater

 - Update 2/2/2014: probleem opgelost als er geen referentiesaldo in OROV is opgegeven

 - Update 15/2/2014: Indien geen orov.INI bestand gevonden wordt dan kan alsnog de update voor het grootste deel worden uitgevoerd. Alleen de laatste stap wordt niet uitgevoerd.

- Update 16/2/2014: Updater pas nu ook tabel voor dubbele transacties aan. Mogelijk is dit voor sommige de oorzaak dat ze alsnog een foutmelding krijgen vanwege te grote velden.

- Update 18/3/2014: Geen orov.ini? Of werkt de updater niet? Kijk dan even naar deze blog.

- Update 25/3/2014: Foutje uit updater gehaald inzake IBAN conversie, waarbij controlegetal kleiner dan 2 getallen.

- Update 22/2/2015: spaties uit IBAN nummers verwijderd.

Inleiding:

Omdat veel mensen niet zelf aanpassingen durven door te voeren in de database van Offline Rekening Overzicht heb ik een update programma gemaakt. Dit tevens als voorloper op een totaal nieuw te schrijven OROV programma. Bijgaand programma (download onderaan de blog) is een update en vervangt het bestaande Offline Rekening Overzicht programma niet. De updater is gemaakt voor versies van OROV vanaf 1.0.x.

Met de 'OROV Update' wordt automatisch:

– rekeningnummers omgezet in IBAN rekeningnummers (ook bij bestaande mutaties)

– database velden van de naam/omschrijving en de mededelingen qua grote aangepast (waardoor er geen importfouten meer zouden moeten voorkomen door te kleine velden).

Na de update kunt u met dit programma:

– rekeningomschrijvingen aanpassen

 

Downloaden:

Klik hier om het programma te downloaden of klik op de hardeschijf onderaan de blog. Pak het zip-bestandje uit. In het zip bestandje zit een uitvoerbaar bestand 'OROV Update.exe'.

Klik erop en het programma zal starten. U krijgt het volgende scherm:

orovup01

Mocht u onverhoopt een foutmelding krijgen in de trant van “kan de toepassing niet juist initialiseren (0xc0000135)” dan heeft u geen of niet de juiste versie van .NET geïnstalleerd. U kunt deze hier downloaden.

Back-up:

Alhoewel het programma een back-up maakt van de database en van orov.ini en het programma uitvoerig getest is adviseer ik (wat zo ie zo altijd verstandig is) om eerst een back-up te maken van Offline Rekening Overzicht door de map waarin OROV en daarmee ook de database is geïnstalleerd te kopiëren of er een zip bestand van te maken. 

Selecteer locatie en geen banken aan:

Kies 'Selecteer folder' en selecteer dan de map waarin OROV geïnstalleerd is. Op de meeste computers zal dit c:\Program Files (x86)\Offline Rekening Overzicht\ zijn.

Indien u de juiste map heeft geselecteerd en u in het bezit bent van andere rekeningen dan de 'oude Postbankrekeningen', dus niet girorekeningen dan zal het programma u per bankrekening vragen bij welke bank deze rekening hoort. Kies de juiste bank. Indien de bank er niet bij staat kies dan voor 'ONBEKEND'.

orovup02

Het programma zal voor de bankrekeningen waar de bank bekend is automatisch het IBAN nummer berekenen. Het IBAN nummer wordt conform de wijze waarop de ING bank dit presenteert opgemaakt. Dat wil zeggen na iedere 4 letters en/of cijfers een spatie. Dus 'NL27 INGB 1234 1234 12'. Indien uw bank (dus een niet ING rekening) de eigen rekening in de importbestanden om een andere wijze presenteert dan kunt u dit handmatig aanpassen in de tabel waar u de oude en de IBAN rekeningnummer ziet. Dit door op de cel met het aan te passen IBAN nummer te klikken en dit dan handmatig aan te passen. 

orovup03

 

Start Conversie:

Als alle rekeningnummers goed staan klikt u de 'start conversie' knop. De conversie start automatisch en is binnen enkele seconde afgerond. U kunt links onder de status zien.

Na de conversie moet u, indien u gebruik maakt van een referentiesaldo, in de oude OROV een nieuw referentiesaldo ingegeven. Dit kunt u onder het menu 'extra' doen. Zoals onderstaande afbeelding laat zien:

orovup06

Aanpassing rekeningomschrijvingen:

In de oude vertrouwde OROV kunt u onder het menu 'Bestand' en vervolgens 'Rekeningen' de namen van de rekeningen aanpassen. Met IBAN nummers werkt dit niet meer omdat OROV een numerieke check uitoefent. Om dit alsnog te kunnen aanpassen kunt u het update programma nogmaals openen en nogmaals de map selecteren waar OROV is geïnstalleerd.

U ziet dan naast de 'Start conversie' button een nieuwe button 'Rekening Omschrijvingen'.

orovup04

Als u hier op klikt krijgt u een pop-up scherm met een overzicht van uw rekeningen en de omschrijvingen. U kunt hier op precies dezelfde wijze als in het oude OROV de omschrijvingen aanpassen (of rekeningen toevoegen).

orovup05

 

Download:

 

download-icon

 

 

 

%PM, %12 %671 %2014 %15:%jan

Conversietool OROV / Update

Update (1 februari 2014, nieuwe versie: datums Rabobank opgelost)

Ondanks de aanpassingen van de database conform mijn vorige blog over OROV krijg ik ook veel berichten binnen van gebruikers van OROV bij andere banken dan de ING bank welke hun mutaties überhaupt niet meer kunnen inlezen. Dit komt doordat sommige banken de indeling van hun CSV bestanden hebben aangepast

Offline Rekening Overzicht kan helaas niet overweg met deze updates van de uit internetbankieren geëxporteerde transacties. OROV geeft dan de volgende melding bij de import:

orevup01

 

Ik heb een conversieprogramma gemaakt welke thans alleen nog de volgende banken kan converteren:

Triodos Bank (nieuwe stijl IBAN CSV)

– Rabobank (nieuwe stijl IBAN TXT)

– Rabobank (oude stijl TXT, rekeningnummer wordt omgezet in IBAN nummer)

LeasePlan bank (CSV, IBAN)

ASN / SNS/ Regiobank (CSV)

 

(Lijst wordt bijgewerkt als andere banken volgen).

In het kort zet het programma het exportbestand (CSV) uit internetbankieren om in een CSV bestand welke wel door OROV gelezen kan worden.

orovup07

 

Ik bankier zelf alleen bij de ING Bank. Mochten mensen problemen hebben met het inlezen bij andere banken doordat het formaat niet herkend wordt dan wil ik graag het conversieprogramma uitbreiden, zodat ook deze bestanden weer in te lezen zijn. Ik heb daarvoor wel een voorbeeld inleesbestand nodig met enkele transacties zodat ik weet hoe de exportbestanden zijn opgebouwd door de betreffende bank. Eventueel kunt u dit met kladblok (niet met Excel) anonimiseren zonder de structuur aan te passen. Geef hieronder dan een reactie. Ik zal u dan per mail benaderen.

Ook hoop in binnenkort een patch programma te maken waarmee je de database correcties van mijn vorige blog inclusief de aanpassingen van de grote van tekstvelden automatisch kan aanpassen. Dan hoef je niet zelf meer middels een databaseprogramma de bewerkingen uit te voeren.

Download:

download-icon

 

 

 

%PM, %05 %738 %2014 %16:%jan

(Dynamische) IP-Blocker voor Joomla

 

Inleiding:

Sinds ik een blog op mijn website heb is het dataverkeer op mijn website verdrievoudigd. Dit kan grotendeels verklaard worden door meer bezoekers die interesse hebben in de blogs of andere delen van mijn website. Echter een aanzienlijk deel komt door spambots welke afkomen op blogs en gastenboeken.

Ik heb uiteraard Google Recaptcha ingesteld om te voorkomen dat de spambots de reacties onder mijn blogs volspammen met reclame. Dit werkt effectief. Echter de spambots blijven het toch proberen. Dit levert veel onnodige dataverkeer op. Analyse van de statistieken laat zien dat het merendeel van mijn dataverkeer uit China komt. Dit terwijl mijn site goeddeels in het Nederlands is geschreven:

ipblock02

 

Een nadere analyse van de IP adressen laat ook zien dat het verkeer met name bestaat uit adressen met een extensie 'dynamic.163data.com.cn', dus er wordt veel gebruikt gemaakt van dynamische IP-adressen door spammers:

ipblock01

 

Vraag:

Ik wil om het dataverkeer te reduceren dus de IP adressen blokkeren van vermoedelijke spammers en daarbij ook met nadruk van bepaalde domeinen zoals hierboven. De meest geëigende weg is gebruikt te maken van .htcaccess bestanden. Echter mijn hostprovider biedt niet de mogelijkheid om .htcacces bestanden te gebruiken.

De alternatieve oplossing is dan een plug-in te gebruiken voor Joomla, de CMS welke ik gebruik, om daarmee spammers te blokkeren. Ze kunnen hiermee nog wel theoretisch bestanden downloaden. Ze kunnen echter geen pagina's meer bezoeken, waardoor er geen plaatjes etc. meer mee-gedownload worden bij het opvragen van pagina's.

Een Joomla extensie (plug-in) moet aan de volgende eisen voldoen:

– Moet vaste IP adressen kunnen blokkeren

– Moet specifieke domeinen kunnen blokkeren zoals .163data.com.cn om dynamische IP spammers tegen te gaan

– Grote vrijheid

– Moet gratis en open-source zijn.

 

Beschikbare extensies:

De keuze op de Joomla extensies site is echter beperkt als het gaat om IP blockers. Er is een keuze uit 6 plug-ins, waarvan 2 commercieel. De meeste plug-ins zijn vooral gefocust op het blokkeren van bepaalde landen en/of regio's. Andere plug-ins kunnen alleen IP adressen blokkeren. Ik heb niet direct de behoefte aan het blokkeren van landen. Ik wil een bepaalde vrijheid hebben in het blokkeren van bepaalde IP adressen. Als ik ze verdacht vindt dan wil ik vaste IP adressen kunnen blokkeren of bepaalde specifieke domeinen om dynamische IP adressen aan te kunnen pakken.

 

Maatwerk:

Ik heb uiteindelijk gekozen voor TorIpBlock. Dit is een simpele extensie waarmee vaste IP adressen kunnen worden geblokkeerd. Deze extensie heb ik een beetje aangepast zodat ik ook bepaalde domeinen kan blokkeren.

De uiteindelijke PHP code welke de IP adressen blokkeert bevindt zich in de map [Joomla hoofmap]/plugins/system/toripblock/. Hierin bevindt zicht het document 'toripblock.php'. Dit bestand heb ik lokaal middels kladblok aangepast. Na de regel '$ip = $_SERVER['REMOTE_ADDR'];' heb ik de volgende stukje code toegevoegd:

// toevoeging CM

$hostnaam = gethostbyaddr($ip); //reverse DNS lookup

// kopieer voor iedere hostnaam welke u wilt blokkeren

if (strpos($hostnaam, '163data.com.cn') !== false) {

$ip = '1.1.1.1';

}

//einde toevoeging

Het document zou er dus zo uit moeten komen te zien:

ipblock03

 

Wat houdt deze code in?:

Met “gethostbyaddr($ip)” voer ik een zogenoemde reverse DNS uit. Omdat spammers met variabele IP adressen lastig te blokkeren zijn op basis van alleen het IP adres, moet hier een list worden bedacht. Een deel van deze IP adressen lopen via een enkele provider. Indien we de hostnaam kunnen achterhalen (lukt niet altijd) dan kunnen daarmee een bepaalde provider blokkeren. Met de reverse DNS wordt het IP adres naar de naam van de provider. Dit levert namen op zoals '197.217.159.27.broad.pt.fj.dynamic.163data.com.cn'.

Vervolgens voer ik een test uit om na te gaan of een bepaalde tekst, kenmerkend voor een te blokkeren domeinnaam voorkomt in de hiervoor opgevraagd domeinnaam, in bovenstaande geval '.163data.com.cn''. In dat geval zet ik het IP adres op '1.1.1.1'. Dit IP adres heb ik eerder al via het admin gedeelte van de plug-in ingesteld. Deze test kan gekopieerd worden om zo aanvullende hostnamen te blokkeren.

 

Toekomst:

Ik heb nu redelijk hardcoded de optie om hostnamen te blokkeren toegevoegd. Verder aanpassing van de plug-in zou het mogelijk moeten maken om hostnamen toe te voegen via de backend van de Joomla en niet via aanpassing van het PHP bestand.

 

 

 

 

%PM, %23 %729 %2013 %16:%dec

Niet werkende debugger VB.net

Bij een vanuit Visual Basic 6 geconverteerde project liep ik tegen het probleem op dat de debugger niet naar behoren werkte. Er kunnen breakpoints aangemaakt worden. Echter deze worden niet geraakt door de Visual Basis 2010 Express editie. Hierdoor kun je de facto niet debuggen wat natuurlijk niet handig is bij het ontwikkelen van programma's.

Op internet gezocht naar oplossingen. Deze waren niet altijd eenduidig of helder opgeschreven. Uiteindelijk met wat try and error de oplossing hiervoor gevonden:

Stap 1)

debugvb02

Zet de settings op Expert Settings.

 

Stap 2)

Nu verschijnt het 'Build' menu.

debugvb01

Kies de 'Configuration Manager...'


Stap 3)

debugvb03

Zet 'Active solution configuration' op 'Debug' en haal het vinkje weg bij 'Build'. De debugger zou weer moeten werken :-)

 

 

 

%PM, %12 %872 %2013 %19:%dec

Autoreset Wifibox via de (Synology)NAS

Zoals eerder aangeven in een blog heb ik sinds enige tijd een wifi ledlamp in huis. Met een wifi ledlamp is het mogelijk om met een app lampen aan of uit te zetten en te dimmen of van kleur aan te passen. Om te communiceren via een app via wifi heb je een wifibox nodig welke als communicatie interface dient tussen het wifinetwerk en ledlampen. In mijn thuissituatie heb ik de wifibox opgenomen in mijn eigen thuiswifinetwerk.

Dit werkt over het algemeen goed. Ook over VPN verbinding maken werkt goed. Het probleem is echter dat na enkele dagen de wifibox geen verbinding meer heeft met het thuisnetwerk. Er is dan een reset (van het stroom halen) om de wifibox weer werkend te krijgen. Dit is vervelend als je erop wilt vertrouwen dat de wifibox het gewoon altijd doet. De vraag is dan hoe we de wifibox betrouwbaarder kunnen maken.

Een optie die ik hierbij bedacht heb is om de wifibox preventief dagelijks (of meermaals per dag) te resetten. De firmware van de wifibox bevat een optie om de wifibox te resetten onder het systeemmenu. Echter de wifibox kan zichzelf niet automatisch periodiek resetten.
In mijn thuisnetwerk is een (Synology) NAS opgenomen. De vraag is dan of wellicht de NAS periodiek de wifibox kan resetten door gebruik te maken van de resetoptie in de firmware van de wifibox.

 

mijn opstelling:

wbreset06

 

 

Om het resetten te automatiseren zal eerst duidelijk moeten zijn welke opdracht de NAS naar de wifibox moet sturen. Dit is te onderzoeken door met Wireshark het netwerk verkeer te analyseren terwijl je inlogt op je wifibox en vervolgens in het menu van de wifibox. In de anlyse zal dan de volgende HTTP pakketje worden gevonden wat verzonden word naar de wifibox op het moment dat op de resetbutton wordt geklikt via de firmware van de wifibox:

wbreset08

Uit dit overzicht blijken twee zaken. Ten eerste valt op dat de url welke de reset activeert "http://192.168.178.100/firmware.html?restart=1" is (in mijn netwerk heeft de wifibox IP adres 192.168.178.100 gekregen). Daarnaast valt op dat er een gebruikersnaam en wachtwoord worden meegegeven. Dit is de standaard gebruikersnaam en wachtwoord van de wifibox (admin, 000000). Dit is logisch omdat we hebben moeten inloggen op de wifibox om bij de firmware te komen:

wbreset01 

 

De 'beveiliging' die hierbij wordt toegepast is zogenaamde basic authentication. Een browser onthoudt normaal gesproken na het inloggen de gebruikersnaam en wachtwoord en geeft deze aan iedere URL mee welke een opvraging betreft bij de wifibox. Op een NAS een reset URLte laten uitvoeren zullen we dus de gebruikersnaam en het wachtwoord moeten meegeven. Dit kunnen we doen door de URL als volgt aan te passen:

http://admin:000000@wifiboxipadres/firmware.html?restart=1 (waarbij wifiboxipadres het ip adres van uw wifibox is).

Door deze URL aan te roepen zal de wifibox zichzelf resetten. We willen dit automatisch doen en niet handmatig. Hierbij kan een NAS een belangrijke rol spelen. Ik heb zelf een Synology. Dus die zal ik hier verder behandelen.

Als je inlogt als administrator op de Synology vindt je daar onder het configuratiescherm de taakplanner (cronjob). Met de taakplanner kun je een taak aanmaken op de URL periodiek uit te voeren.

wbreset02

 

Maak een nieuw taak aan en voer bij door gebruiker gedefinieerd script het volgende script in:

wget -q 'http://admin:Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken./firmware.html?restart=1'

wget is de Linux commando(prompt) opdracht om een webpagina te openen. De "-q" houdt in dat wget hiervan niets op het scherm toont. Zorg er wel voor dat de gebruiker op 'root' wordt gezet. Root is namelijk de enige gebruiker welke vanaf de command prompt van de Synology netwerk toegang heeft. Onder het tabblad planning kan aangeven worden hoe vaak de script moet worden uitgevoerd.

wbreset04

 

Dit lost het probleem niet geheel op, maar maakt de wifibox wel een stukje stabieler. En wellicht is bovenstaande ook handig om andere zaken te automatiseren.

 

In het kader van de thuis automatisering heb ik sinds een weekje een Wifi ledlamp in huis. Middels de bijbehorende afstandsbediening en middels de app kun je de ledlampen bedienen. In het starterspakket zitten een ledlamp, afstandsbediening en Wifibox. De Wifibox is nodig om onder andere de 'Wifi Controller 2 App' te gebruiken welke beschikbaar is voor Android en IOS.

ledlamp01

 

Windows Wifi ledcontroller

Omdat de Wifi Controller app helaas nog niet IOS7 proof is en ik geen Android apparaten in mijn bezit heb kon ik tot op heden de app nog niet gebruiken. Onder dat mom gekeken of het mogelijk is om een eigen controller te maken. Eerst voor Windows en wellicht later voor de Synology. Met Visual Basic 2010 Express heb ik een basale Wifi Controller gemaakt voor Witte lampen! Maar met simpele aanpassingen kan het programma ook makkelijk aangepast worden voor gekleurde ledlampen. Bovenin kan het IP adres en port (standaard 50000) van de Wifibox worden opgegeven.

ledlamp02

 

De wifibox kan worden aangestuurd middels commando's van 3 bytes lang welke via het UDP protocol naar de wifibox gestuurd kunnen worden. Een API voor de wifi ledlamp is gemaakt door www.applamp.nl. Mijn programma is daar dan ook gebaseerd. Dus alle credits voor applamp.nl op dat gebied. De hexadecimaal getallen heb ik omgezet naar ASCII codes (ofwel de byte code). Alleen de eerste byte is echt van belang. Die geeft de feitelijke opdracht door aan de wifibox. De laatste twee bytes zijn altijd ASCII (0) en ASCII (85).

Het programma kent twee belangrijke basis SUB's:

  • SendUDP
  • Wcommand

 

SendUDP

ledlamp03

 

De eerste Sub, SendUPD is verantwoordelijk voor het verzenden van het UDP pakketje over het netwerk. Voor deze SUB moeten wel de volgende referenties worden opgenomen in het programma:

  • Imports System.Net.Sockets
  • Imports System.Text

 

Wcommand

 

ledlamp04

 

De twee sub bevat een lijst alle commando's die mogelijk zijn voor een witte lamp. Het IP adres en de port worden uitgelezen van de textboxen op het form. Voor de volledige programma code inclusief een gecompileerde versie (voor de niet programmeurs) van het programma bijgaande download (click op de hardisk).

download-icon

 

Vervolg...

Het programma kan natuurlijk uitgebouwd worden. Interessanter zou het zijn om een programma te schrijven voor een NAS zoals bijvoorbeeld voor de Synology NAS. Dan zou het bijvoorbeeld mogelijk zijn om een digitale tijdschakelaar te maken welke automatisch de lampen aan en uit zet op bepaalde tijdstippen. Wellicht is het ook mogelijk om statussen terug te krijgen van de lampen om zo te zien of een lamp aan of uit is. Dit zal nog uitgezocht moeten worden.

Sinds kort maak ik gebruik van de K2 extentie voor Joomla. K2 is vooral handig voor het maken van een blog op je website. Een blog maakt het mogelijk om (korte) artikelen te publiceren en ruimte te bieden aan lezers om reacties achter te laten. Daar ik niet fulltime mijn site bekijk is het handig als ik een e-mail ontvang als er een nieuwe reactie geplaatst wordt. Helaas voorziet K2 hier niet standaard in. Wat googlen leert dat er wel enkele betaalde extenties zijn voor K2 die dit kunnen ondervangen. Echter als echte Nederlander ga ik niet teveel betalen voor een simpele functionaliteit die je ook makkelijk zelf kan implementeren.

Een zoektocht op internet bracht me eerst op deze site. Het doorvoeren van deze wijzigingen leverde in mijn geval echter geen e-mails op. De reden hiervoor is dat 'joomla hack' uitgaat van het feit dat reacties voorafgaande aan publicatie dienen te worden goedgekeurd. Ik ga bij mijn site uit van controle achteraf. Dus mensen mogen reacties plaatsen. Als er spam of opmerkingen bij zitten die het daglicht niet kunnen verdragen dan haal ik die achteraf van mijn site. 

Dus hoe moeten we er dan wel voor zorgen dat er een e-mail notificatie komt als iemand op je K2 Blog een reactie heeft achtergelaten? Hiervoor moeten we een stukje PHP code gaan toevoegen aan het item.php bestand wat onderdeel is van de K2 installatie.

Het item.php bestand vindt je onder het mapje 'components' in je Joomla installatie. Vervolgens ga je daar naar het mapje 'com_k2' en vervolgens naar het mapje 'models'. Ofwel in het kort: /components/com_k2/models/item.php.

In het item.php bestand (bewerken met teksteditor of php editor) zoek je naar ' function comment()'. Vervolgens scroll je langzaam naar beneden totdat je een regel tegenkomt met de tekst 'K2_COMMENT_ADDED_REFRESHING_PAGE'. Voor deze regel plaats je de volgende regels code:

 

$mainframe = &JFactory::getApplication();
$mail = &JFactory::getMailer();
$senderEmail = $mainframe->getCfg('mailfrom');
$senderName = $mainframe->getCfg('fromname');

$mail->setSender(array($senderEmail, $senderName));
$mail->setSubject('K2 Blog commentaar ontvangen');
$mail->IsHTML(true);
$body = " <strong>".JText::_('K2_NAME')."</strong>: ".nl2br($row->userName)." <br/> <strong> E-mail: </strong>: ".nl2br($row->commentEmail)." <br/> <strong>".JText::_('K2_COMMENT')."</strong>: ".nl2br($row->commentText)." <br/> "; $mail->setBody($body);
$mail->ClearAddresses();
$mail->AddAddress($params->get('commentsReportRecipient',
$mainframe->getCfg('mailfrom')));
$mail->Send();


      

Na het doorvoeren van deze aanvulling en het opslaan van item.php (en het eventueel opnieuw uploaden van dit bestand) zouden er na iedere geplaatste reactie een e-mail verzonden moeten worden naar het mail adres van de administrator.

Ik merk wel op dat bij iedere update van het K2 component bovenstaande handeling opnieuw uitgevoerd moet worden omdat dan waarschijnlijk er weer een nieuwe versie van item.php is.

 

Nog een korte uitleg van de bovenstaande code:

- Met '&JFactory::getmailer()' wordt de Joomla standaard email component aangeroepen.

- $senderEmail, $senderName halen e-mailadres en naam(site) op uit het Joomla configuratiebestand.

- Met $mail, $body wordt gecommuniceerd met Joomla mailer. In dit geval wordt de mail door de administrator verzonden naar hem-/haar-zelf.

- $body bevat de daadwerkelijke inhoud van de het de e-mail. $row wordt door K2 gebruikt om te communiceren met de database. Hieruit vissen we de door de reageerder ingevulde mailadres en naam.

- JText is een Joomla vertaalfunctie.

 

 

Pagina 1 van 2