Download - Drupal home automation met vscp
Drupal Home automation met VSCP
Peter Bosmans
Concept
• Centraal schakelpunt (teleruptors, relais)• Gedistribueerde controllers gekoppeld via een
eenvoudig netwerk (Bijv. één per kamer)• Geen Master-slave netwerk (SPOF), met een
bestaand protocol• Open source – Open hardware– Firmware , protocol– Control software
Home automation control software
• Home remote (java – tomcat)• Linux MCE (gebaseerd op Ubuntu)• Misterhouse (Perl – ook met VSCP)• Drupal– Webgebaseerd, toegangsrechten, taxonomie, …– Connectie met database (logging, views, …)– Uitbreidbaar -> VSCP module
VSCP• Very Simple Control Protocol
http://sourceforge.net/projects/m2m/files/VSCP%20Specification/http://en.wikipedia.org/wiki/Very_Simple_Control_Protocol
• Open source multiplatform : windows, linux – multicontroller : PIC, AVR, ARM, …
• Bruikbaar over verschillende fysieke lagen–Level I : RS232, RS485, RF, CAN–Level II : Ethernet
• Event gebaseerd• Configureerbare Modules
–Registers : I/O gedrag, I/O zones-subzones –DM (Decision matrix) : Filter - Action
VSCP events
• Class : Collectie van event types– INFORMATION(20) , ALARM(1), MEASUREMENT(10), ….
• Type : Type van event– CLASS INFORMATION : BUTTON(1), ON(3), OFF(4), BELOW LIMIT(10), …– CLASS MEASUREMENT : COUNT(1), TEMPERATUUR(6), GEWICHT(3), …
• Zone : bron van event class-type– Kelder(1), Gelijkvloers(2), …
• Subzone : sub-bron van event class-type– Keuken(1), Salon(2), Berging(3), Terras(4), …
Communicatie Drupal <-> VSCP
VSCPD– Gateway daemon tussen het CAN-netwerk en IP-netwerk.– DM voor filter – action
•Inkomende VSCP eventsCANbus -> USB2CAN convertor -> USB -> VSCPD -> DM -> PHPscript ->
XMLPRC• DM start PHPscript bij een INFORMATION ON/OFF VSCP event• PHPscript maakt een XMLRPC call naar drupal
•Uitgaande VSCP eventsDrupal VSCP module -> VSCPD -> USB -> USB2CAN convertor -> CANbus
VSCP module• Taxonomie
– Level I Events : Reeds geconfigureerd in xml-file (Taxonomy import/export) – Zones-Subzones : Te configureren door de gebruiker
• Hiërarchisch opgebouwd• Synoniem bevat de zone- of subzonenummer
• Contenttypes– VSCPevent : Elk VSCPevent heeft een corresponderende Drupal node
• Taxonomy : Bepaalt het VSCP-event (class, type, zone, subzone)• Byte0 : Nodig voor bepaalde events• Data : Nodig voor bepaalde events• Node referenties (sended, received) : Connectie tussen verzonden en ontvangen events• Logtype : Type van logging ; via revisions of via nodes van het contenttype VSCPlog• Log referentie : Referentie naar de logging-node als er met revisies gewerkt wordt.• Button : Het event wordt verstuurd door ofwel een ‘view’ node of via de ‘button’ field
– VSCPlog• Class, Type, Byte0, Zone, Subzone, Data : Velden voor de corresponderende waardes.
VSCP module• Zelflerend bij elk ontvangen event
– Node niveau• check op VSCP class, type, zone en subzone• Indien de node nog niet bestaat : maak node aan• Indien de node wel bestaat :
– update node timestamp – Indien referentie naar een send event node : update de receive referentie in de send event
node – Taxonomie niveau (Zone-Subzone)
• Indien de zone en of subzone nog niet bestaat : maak deze taxonomie term aan
• ReferentiesOm de laatst ontvangen VSCP event te koppelen aan z’n corresponderend verzonden VSCP event Bijv.: - on/off events koppelen aan button events.- het koppelen van het event met de werkelijk gemeten waarde, aan het event, om een temperatuur te zetten.
VSCP module• Rules integratie– Rule trigger :
• After a VSCP event is received
– Rule condities : • VSCP event has zone• VSCP event has subzone• VSCP event has class• VSCP event had type• VSCP event had byte0• VSCP event had databytes
– Rule actie : • Send a VSCP event
– Rule sets• Bruikbaar voor oa. tijdsgebonden VSCPevents
Demo : Technische opbouw
• Elektrische installatie
• Nodes : CAN based modulesConfiguratie : IN1, OUT1 => Zone = 1 = ‘Kelder’ ; Subzone = 1 = ‘Voorraad’IN2, OUT2 => Zone = 2 = ‘Gelijkvloers’ ; Subzone = 1 = ‘Keuken’IN3, OUT3 => Zone = 2 = ‘Gelijkvloers’ ; Subzone = 2 = ‘Woonkamer’
Demo : Drupal - VSCP• Configuratie :
– Manuele instelling• Taxonomie ‘Zone-Subzone’• Content VSCPevent ‘Information – Button’
– Semi-Automatisch via de zelflerende mogelijkheid• Taxonomie ‘Zone-Subzone’• Content VSCPevent ‘Information – On/Off’
– Koppel het ontvangen VSCPevent aan het corresponderend verzonden VSCPevent.
• Views : – Buttons view : Overzicht van de ‘Information - button’ VSCP events met de
relatie van de laatst ontvangen ‘Information – On/Off’ event • Voorbeelden van enkele rules :
– ButtonSendEvent : Deze zorgt voor het verzenden van het VSCPevent en de refresh van de pagina, na een korte vertraging.
– Kelder Voorraad ON – Email : Verzend een mail wanneer het licht aangedaan wordt in de voorraadkelder.
• Rulessets : – Voor oa. het scheduleren van VSCPevents. Bijv. Elke 2 minuten het licht aan/uit doen.– …
Toekomstige ontwikkelingen• Meer sensor integratie (temperatuur, licht, …)
• Meer widgets voor drupal • Ajax integratie• Migratie naar Drupal 7• Integratie van MQTT in de VSCP daemon
MQTT (MQ Telemetry Transport) : eenvoudige overdracht van berichten via een ‘broker’ met ‘publish/subscribe’ procedures
• Integratie van WS in de VSCP daemon (HTML5)
• https://www.thingspeak.com/, https://pachube.com/, …
Vragen ??
Nuttige Links
VSCP : http://www.vscp.org/
VSCP source : http://sourceforge.net/projects/m2m/?source=directory
VSCP drupal module : http://drupal.org/sandbox/pbosmans/1429844
VSCP kiewit hardware module : https://sourceforge.net/p/vscpmodules/kiewit
Feedback & follow-up: http://drupalcampgent.be/feedback