pilight
Bezoek ook eens het forum op http://www.pilight.orgIntroductie
Na als een van de eerste een Raspberry Pi [RPi] te hebben, ben ik begonnen met het maken van een domotica oplossing. Eerst bestond dit alleen uit een zender en een ontvanger om de codes van mijn afstandsbediening [AB] uit te zoeken. Na een tijdje (nadat ik gestopt ben bij XBian) ben ik dit gaan uitbouwen tot een volwaardige domotica oplossing genaamd pilight. Aangezien deze oplossing het voornaamste discussie onderwerp werd van het [GPIO] Raspberry Pi topic, vond ik het tijd worden voor een eigen topic.Wat is het
pilight uit een centrale daemon. Verschillende clients kunnen zich met deze daemon verbinden om daarmee je 433.92Mhz apparaten te bedienen en uit te lezen. Van deze client zijn er verschillende soorten:- Ontvanger: deze laat de ontvangen code zien
- Zender: deze laat ruwe codes verzenden
- Controller: deze laat je apparaten bedienen zoals je die zelf definieert in een config bestand
- GUI: dit is de grafische schil die het bedienen en monitoren van het geheel makkelijk maakt
Daarnaast bestaat er nog een debugger en een learner. Het doel van de debugger is om niet ondersteunde apparaten toch de kunnen bedienen aan de hand van hun ruwe codes. De learner maakt het makkelijk om nieuwe protocollen te schrijven.
Waarom nog een oplossing
Er zijn al verschillende oplossingen beschikbaar op je RPi om te toveren tot een volwaardige omotica server. Het probleem is alleen dat deze uitgaan van bestaande externe apparaten die tot € 100,- of meer kosten. Mijn oplossing onderscheid zich door de volgende punten:- Goedkoop: Alle benodigde onderdelen (buiten de RPi kit) zijn te koop voor minder dan € 10,-
- Modulair: De protocollen zijn makkelijk uit te breiden zonder afhankelijk te zijn van externe partijen.
- Cross-platform: De daemon en de clients zijn cross-platform (Linux, FreeBSD, en Windows), waardoor je je clients vanaf meerdere computers kan draaien.
- DIY: Het vergt een kleine inspanning om de low-pass filter te bouwen die nodig is voor een perfecte werking.
- Extene scripts: Het is mogelijk om de daemon een extern script te laten draaien zodat je aan bepaalde codes bepaalde acties kan koppelen.
- Taal onafhankelijk: De code is zo gemaakt dat hij via elke mogelijke programmeer taal uit te breiden is.

Real-life voorbeelden
Op dit moment zijn er een aantal gebruikers uit [GPIO] Raspberry Pitopic die de code al draaien:
Gebruiker 1:
Heeft een weerstation waarvan de ontvangen waardes door het externe script in een database worden weggeschreven.
Gebruiker 2:
Draait een XBMC RPi. Op deze RPi worden via Lirc AB codes via de controller doorgestuurd naar een tweede centraal gelegen RPi waarop de daemon draait, om zo de lampen te bedienen.
Wat zijn de mogelijkheden
Om een goede indruk te geven van wat de mogelijkheden zijn, heb ik zelf alvast een Java GUI en Android App gemaakt. Aangezien beide projecten mijn eerste Java en Android projecten zijn, is de kwaliteit van de code natuurlijk twijfelachtig.De Java applicatie werkt op zich prima, de android app is een resources / battery drainer
De applicatie in Java en Android zien er dan als volgt uit:

pilight serveert standaard ook een webgui met dezelfde mogelijkheden als de verschillende Apps.

Zodra een van de lampen wordt aanzet, dan zal in alle cliënt de status van de lamp bijgewerkt worden. Ook weer data en dimmer data worden op dit moment door zowel de daemon en de GUI ondersteund.
Wat wordt ondersteund
Zie daarvoor de lijst op http://wiki.pilight.org/doku.php/protocolsMaar verdere ondersteuning is afhankelijk van de inzet van gebruikers.
Video's
Effect van de low-pass filter[YouTube: http://youtu.be/W87LOuC1FFM]
Het ontvangen van codes
[YouTube: http://youtu.be/Hy2VZmI3boM]
Voorbeeld van multi-platform clients
[YouTube: http://youtu.be/UC9yWd5lh4c]
Het verzenden van codes
[YouTube: http://youtu.be/pYFpjMVbRaI]
Onder de motorkap
De GPIO implementatie.De koppeling tussen de daemon en de GPIO pinnen wordt gelegd via een Lirc module. Deze zorgt ervoor dat er op kernel niveau interrupts worden afgevangen. Deze zijn daardoor minder onderhevig aan systeem belasting en andere externe factoren.
De communicatie
De daemon en de clients communiceren met elkaar via standaard TCP sockets. Sockets zijn cross-platform en taal onafhankelijk. Dit maakt het dan ook mogelijk om de daemon in C te hebben draaien en de huidige GUIs in Java. Voor de data uitwisseling wordt gebruik gemaakt van JSON objecten. Ook deze taal onafhankelijk aangezien er voor vrijwel alle talen wel een JSON plugin bestaat.
Low-pass filter
Voor een perfecte werking is het nodig om zelf een low-pass filter te bouwen. Voor verschillende merken ontvangers zijn er verschillende filters ontwikkeld. Zie de wiki voor meer informatie: http://wiki.pilight.org/doku.php/electronics
Documentatie
De werking van alle programma's is na te lezen op mijn git pagina:
https://github.com/pilight/pilight
De verschillende JSON objecten die de daemon kan versturen zijn te vinden op:
http://wiki.pilight.org/doku.php/api
Todo
Zoals ik ook al eerder had aangegeven heb ik zelf een Java en Android App gemaakt. Ik ben zelf zwaar onhandig in het maken van GUIs waardoor beide applicaties matig tot slecht werken en erg nogal lelijk uit zien. Hopelijk zijn er mensen die wel kennis hebben van deze laatste genoemde zaken zodat zij kunnen helpen met het maken van:- Een goed werkende en mooie Android en iPhone app
- Een goed werkende Windows, Linux en OSX applicatie
- Het maken van een kant-en-klare module met de low-pass filter, zender en ontvanger geïntegreerd en die voor kleine winst gekocht kan worden.
Disclaimer
Het is belangrijk dat men begrijp dat dit gehele project mijn eerste ervaring is met C, Java, en Android. Ik heb veel kennis van Linux en PHP, Javascript, SQL enz. maar in de eerder genoemde talen had ik nog nooit op deze schaal iets gemaakt. Ik sta dus open voor kritiek, zolang hier maar rekening mee wordt gehouden. Voor een ieder die kritiek heeft, verbeter de boel. Het is niet voor niks Open Source.Installatie
Zie hiervoor: http://wiki.pilight.org/doku.php/installationAankoop advies
Koop dus alleen deze:En niet deze:
Mocht je toch besluiten de tweede te halen, dan kan ik daar geen hulp bij bieden. Drie van die setjes hebben hier niet gewerkt.
!Ook de iPrototype ontvanger wordt (nog) niet ondersteund door pilight!
Waar te halen:
https://iprototype.nl/pro...ons/rf-transmitter-434mhz
http://www.ebay.nl/itm/43...ain_0&hash=item3a78a01065
http://nl.rs-online.com/web/p/telemetry-modules/7620099/
Aanbod
Er wordt dit moment hard gewerkt aan een betere versie van de LPF. Tot die tijd zijn de onderdelen niet meer te koop en was de voorraad überhaupt al uitgeputGNU GENERAL PUBLIC LICENSE
Voor alle duidelijkheid. Alles wat ik voor dit project maak valt onder de GPL licentie. Dat betekent tegelijk dat alle veranderingen die jullie met mijn code / ontwerpen / circuits doen, ook openbaar gemaakt moet worden inclusief mijn naam als auteur, mits je het zelf weer verder verspreid. Voor eigen gebruik is het natuurlijk geen probleem. Als je dat niet bevalt, dan kan je beter een ander project kiezen, maar besef dat het openbaar maken van je uitbreidingen / aanpassingen anderen de gelegenheid geeft om je werk weer beter te maken / uit te breiden. Als je uitbreidingen / aanpassingen hebt gedaan, vergeet dan niet jezelf als (mede)-auteur te vermelden. Mocht je met mijn project geld willen verdienen, dan zou ik het netjes vinden als je een klein deeltje van de winst doneert om mij te bedanken voor de tijd die ik er ingestoken hebt.LEESMIJ
Ik merk dat er steeds meer mensen zijn die hun interesse tonen in pilight. Dat vind ik alleen maar mooi. Een onvermijdelijk gevolg is dat hier mensen bij zitten met verschillende ervaringen in linux, electronica, etc., maar ik wel steeds meer vragen krijg om op al die vlakken ondersteuning te bieden. Daarvoor voor alle duidelijkheid:Het gaat hier om een vrijwillig / gratis / niet-commercieel / open project. Daar zitten voordelen aan dus:
- Gratis
- Open
Maar ook nadelen:
- Geen gegarandeerde ondersteuning
- Voor eigen risico dus geen garanties
- Wegens de geringe vrije tijd van mensen geen deadlines
Dat betekent dus ook heel concreet dat ik geen verantwoordelijkheid wil dragen voor alle (genoemde) nadelen. Ik heb dus zelf niet altijd de tijd / zin / wil om je te helpen als je denkt niet genoeg vaardigheden te hebben om met die nadelen om te gaan. Daarvoor is het forum zodat je om hulp kunt vragen, maar dan nog is er geen garantie dat je die krijgt. Mocht je dat geen optie vinden, dan kan je beter een commercieel product kopen waarbij goede ondersteuning wordt geleverd.
[ Voor 255% gewijzigd door CurlyMo op 02-01-2014 13:51 ]
Sinds de 2 dagen regel reageer ik hier niet meer