Samen meer lol en meer resultaat

Alles wat betrekking heeft op dit Dutch boek. (DUTCH forum)
Ton Buurman
Starting Member
Starting Member
Posts: 4
Joined: Tue Jun 16, 2009 10:37 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Ton Buurman »

Tijdens de datacommunicatie stel ik een communicatie mode in. Bij het afhandelen van de binnengekomen data (en eventueel foutcodes) doe ik dit afhankelijk van de communicatie mode waar de communicatie zich op dat moment in bevindt. De modes die ik gebruik zijn (in Delphi): TCommunicationMode = (cmNone, cmStartCommand, cmInterfaceCommand, cmAddress, cmIOFunction, cmData).

Ten aanzien van de CRC check: mijn software draait al een tijdje, weliswaar met een beperkt aantal devices, maar op dit vlak nooit geen problemen gehad.

Ton
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

Inmiddels ben ik aan het nadenken over de database waar de scenario's in bewaard kunnen worden. Zoals ik de opzet begrijp zou bij het afgaan van een trigger met een SQL query gezocht worden naar scenario's die met die trigger beginnen. Vervolgens staat in het scenario aan welke voorwaarden nog meer moet worden voldaan, en welke acties zouden moeten plaatsvinden als aan alle voorwaarden wordt voldaan.
Heeft iemand een voorbeeld hoe hij deze database op heeft gebouwd? Of heeft iemand een correctie op mijn uitleg? Ik vind het namelijk best lastig om hier een opzet voor te verzinnen en weet niet of ik in de goede richting aan het denken ben.
Digit
Global Moderator
Global Moderator
Posts: 3388
Joined: Sat Mar 25, 2006 10:23 am
Location: Netherlands
Contact:

Samen meer lol en meer resultaat

Post by Digit »

Je zou je bv. kunnen afvragen of je wel bij elk afgaan van een trigger (wanneer is dat?) de SQL zou moeten raadplegen. In principe zijn scenario's redelijk onveranderlijk, lijkt mij. Ik heb er zelf voor gekozen om tijdens het opstarten de scenario's in het geheugen te lezen. Voeg er een refresh-optie bij om dit inlezen te laten herhalen zonder een herstart te doen als je iets hebt veranderd in de scenario's en het scheelt je een hoop I/O.
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

Goed punt, ik heb dan ook de toegang tot de database onder controle (zowel de "scenario-schrijf" software wil toegang als de runtime software als er een trigger komt in mijn model).
Bedankt voor de hint, ik probeer op dit pad eens verder te denken.
Arco
Starting Member
Starting Member
Posts: 10
Joined: Mon Oct 29, 2007 4:26 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Arco »

Hallo allemaal,
Een tijd geleden ben ik ook bezig geweest met het domotica-systeem van Heino. Toen ben ik vastgelopen in de programmatuur voor de pc. De combinatie van een nieuwe programmeertaal (VB.NET 2005), interfacing via de COM-poort, realtime verwerking en beschikbare tijd was net even te veel. Maar omdat domotica toch blijft trekken wil ik er weer mee verder.
Het initiatief van de bovenstaande posters om dingen samen te doen trok me dus wel aan. We kunnen allemaal van elkaar leren.

Inhakend op de bovenstaande topics:
- Database; In het boek staat een databasemodel beschreven. Het ziet er ingewikkeld uit, maar het is nodig om alle acties te kunnen uitvoeren die Heino beschrijft. Ik heb het datamodel grotendeels uitgewerkt in MS-Access. Als er belangstelling voor is dan wil ik deze wel posten.

Zelf was ik van plan om de scenario's uit een database te halen bij een trigger vanuit 'HPDomotica' of bij het bereiken van een bepaald tijdstip. Met als achtergrond een nieuwe versie van de database aan het domoticasysteem te geven als een scenario verandert. Ik had nog niet uitgewerkt hoe ik wijzingen in scenario's (de nieuwe versie van de database) in de productie-omgeving kon doorvoeren. Omdat ik vermoedde dat bij een herstart de opgebouwde tellers in het geheugen zouden verdwijnen. @ Digit: Dus ik ben benieuwd hoe je het domotica-systeem (PC) kan laten weten dat er nieuwe of aangepaste scenario's zijn.

- Interfacing met de COM-poort. In thread 'Test programma domotica interface' heeft DMB een testprogramma gemaakt. De broncode van versie 1.5 hiervan is beschikbaar op het forum. Hier heb ik veel van geleerd voor mijn softwareprobeersels. Er zijn inmiddels nieuwere versies beschikbaar van het testprogramma.

Ik zal de posting op het forum goed in de gaten houden.
Groeten,
Arco
Digit
Global Moderator
Global Moderator
Posts: 3388
Joined: Sat Mar 25, 2006 10:23 am
Location: Netherlands
Contact:

Samen meer lol en meer resultaat

Post by Digit »

Hoi Arco,

Eigenlijk heel eenvoudig; ik heb een procedure in mijn applicatie die ReloadEvents heet.
Deze doet een eenvoudige query en bekijkt of de daarmee gevonden scenario's aanwezig zijn in het werkgeheugen.
Zo ja, zal het betreffende scenario de opdracht krijgen zichzelf te refreshen qua triggers en actions.
Zo nee, dan wordt het betreffende scenario aangemaakt.
En als laatste worden niet meer in de database aanwezige scenario's uit het werkgeheugen verwijderd.

Deze ReloadEvents is op diverse manieren te triggeren; een button op de applicatie maar bv. ook via de website middels XMLRPC.

Ik heb wel eens met de gedachte gespeeld om ook die buttonclick overbodig te maken door SSNS (http://en.wikipedia.org/wiki/SQL_Server ... n_Services) in te zetten, maar dat vond ik een beetje overkill [:)]



<hr noshade size="1"><font size="1">Robert
http://www.hekkers.net <i>Digit's Online Home.</i></font id="size1">
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

Arco,

leuk te horen dat er nog iemand over na an het denken is. Ook ik moest een nieuwe taal leren (C#), voor het eerst interfacen met de com port en "realtime" verwerken. Ik heb dus wel een idee waar je allemaal tegenaan gelopen bent.
Voor wat betreft de database ga ik dat zelf doen met XML files. Mijn programmatuur wil ik in de volgende stappen realiseren:

Fase 1: runtime dat scenario's afloopt, variabelen voor scenario's en inputs/outputs in de code zelf van waarden voorzien.
Fase 2: scenario's en input output variabelen inlezen vanuit XML files.
Fase 3: veranderingen in domotica netwerk loggen in file.
Fase 4: Programmatuur om met een vriendelijke interface de hardware te onderhouden (toevoegen actoren, sensoren, IOmodules) en scenario's te bouwen. Output hiervan zijn de XML files.
Fase 5: (Web)Interface om status sensoren en loggings te bekijken en actoren direkt aan te sturen of een scenario te starten. Daarnaast ook graag van hieruit nieuwe scenario's in laten lezen.

Je begrijpt het al, ik zit nu nog in Fase 1. Wel heb ik al nagedacht om voordat Fase 5 is, een andere oplossing te hebben voor het opnieuw inlezen van de scenario's. Ik denk persoonlijk dat het handig is om (ervan uitgaande dat de runtime PC een embedded oplossing is) 1 van de actoren in het domotica-net aan een speciaal scenario te hangen, namelijk het opnieuw inlezen van de scenario's.
Wellicht is dit sowieso een oplossing om een aantal standaardopdrachten aan de software mee te geven die verder niet met actoren te maken hebben.
Arco
Starting Member
Starting Member
Posts: 10
Joined: Mon Oct 29, 2007 4:26 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Arco »

Hallo Tiz,
Waarom heb je gekozen voor XML voor de scenario's? Deze bestanden moeten ook kunnen worden onderhouden. Een database helpt om de verwijzingen (tussen scenario's, voorwaarden en acties) goed te houden.

Gelukkig hoefde ik geen C te lezen. Met VB.NET kan de interface met de COM-poort ook worden geregeld. Ik heb veel geleerd van het testprogramma van DMB. Daarmee kan ik ook testen of de printen goed werkten. (Maar nu genoeg reclame voor DMB ;o) )

Je stappenplan lijkt me goed. In fase 3 mis ik nog de trigger Tijd, bv als op een bepaalde tijd iets moet worden geschakeld. Deze trigger komt niet uit het domoticanetwerk
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

Arco,

ik gebruik de XML niet om alles te koppelen. Ik gebruik een object scenariocontainer waarin triggers, scenario's, conditions en actions zitten. De koppeling zit dus in de software, in de XML file staan ID's en benamingen etc.
Daarnaast gebruik ik een object IOcontainer waarin de laatste statussen van alle actoren (maar ook timers en fields) wordt opgeslagen en bijgehouden.
Dit concept heb ik min of meer afgekeken van het router project dat een stageair onder begeleiding van Heino Peters bij Logica CMG heeft uitgevoerd.
Je kunt dit terugvinden door "software" gratis te downloaden op de Elektor site als je daar een account hebt aangemaakt.

http://www.elektor.nl/artikelen-als-pdf ... 4110.lynkx
mgb
Starting Member
Starting Member
Posts: 22
Joined: Sat Nov 17, 2007 9:52 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by mgb »

Is het niet eenvoudiger om een plugin te schrijven voor een product als Domotiga. Op die manier kun je de Octobus ook combineren met andere domotica systemen. Ik weet niet of dit eenvoudig is. Ben zelf net begonnen met dit systeem.
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

Een plugin schrijven lijkt me een heel reele overweging. Ik zou hem echter dan wel schrijven voor Homeseer. In eerste instantie heb ik hier niet zo over nagedacht en later was ik al goed op weg met mijn eigen software. Ik ga ook zelf door om meer te leren (zowel programmeren met C# is nieuw voor mij als de hardware.) Ik sluit niet uit dat als ik een stuk wijzer geworden ben, ik alsnog een plugin ga schrijven met de SDK van Homeseer. Hierbij zal mijn C# code zeker ook weer van pas komen aangezien ook Homeseer graag ziet dat de plugins in .NET worden geschreven.
Mocht er op een dag een plugin zijn, dan laat ik het natuurlijk op dit forum weten.
Heino Peters
Member
Member
Posts: 75
Joined: Wed Jun 21, 2006 10:31 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Heino Peters »

DMB heeft ooit de ambitie gehad een plugin voor Homeseer te schrijven. Misschien een idee om hem te vragen hoe ver hij is?
mgb
Starting Member
Starting Member
Posts: 22
Joined: Sat Nov 17, 2007 9:52 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by mgb »

Helaas is homeseer een windows product en draait mijn server onder linux. Zodra ik de hardware aan de praat heb ga ik me verdiepen in het aansturen van de hardware.
Tiz
Member
Member
Posts: 146
Joined: Tue May 19, 2009 12:21 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by Tiz »

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by mgb</i>
<br />Helaas is homeseer een windows product en draait mijn server onder linux. Zodra ik de hardware aan de praat heb ga ik me verdiepen in het aansturen van de hardware.
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
mgb, dan zou ik zeker de link 1 posting boven jouw eerste post hier eens bekijken. Dit is een project in C++ geweest, geschreven voor een Router met Linux.
mgb
Starting Member
Starting Member
Posts: 22
Joined: Sat Nov 17, 2007 9:52 pm
Location: Netherlands

Samen meer lol en meer resultaat

Post by mgb »

@Tiz,

Had dit project al gezien en de info van de elektuur website gehaald. Ga dit zeker gebruiken als basis voor mijn software. Nu nog even wachten op de printjes.
Post Reply

Return to “Domoticaboek Heino Peters”