Styra raspberry GPIO pinnar
Moderators: Daniel, tom_rosenback, Telldus
Styra raspberry GPIO pinnar
Hej,
Jag skulle vilja kunna styra några av Raspberry PI's GPIO anslutningar med HA.
Jag föreställer mig att man t ex kan göra genom att anropa ett eller flera python och/eller shellscripts men skulle gärna ha lite tips eller exempel på hur man (bäst) ska göra detta.
Mvh Aryan
Jag skulle vilja kunna styra några av Raspberry PI's GPIO anslutningar med HA.
Jag föreställer mig att man t ex kan göra genom att anropa ett eller flera python och/eller shellscripts men skulle gärna ha lite tips eller exempel på hur man (bäst) ska göra detta.
Mvh Aryan
Re: Styra raspberry GPIO pinnar
Det beror nog lite på hur avancerat det behöver vara. Du kan ju testa med pluginet "custom command" som följer med HA. Det tillåter dig i princip att konfigurera ett kommando som exekveras när en enhet slås på och ett annat kommando när den slås på (och du kan även i kommandot stoppa in saker som t ex %name% och %status%). Alternativet om du behöver ha något mer flexibelt är nog att göra ett nytt plugin för ändamålet (vilket inte är speciellt svårt om man bara kan lite php).aryan wrote:Jag skulle vilja kunna styra några av Raspberry PI's GPIO anslutningar med HA.
Jag föreställer mig att man t ex kan göra genom att anropa ett eller flera python och/eller shellscripts men skulle gärna ha lite tips eller exempel på hur man (bäst) ska göra detta.
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Styra raspberry GPIO pinnar
Tack för dit svar. Har inte senaste version ännu men kopierade customcommand mappen från V3.3 och la in det i min systemplugins map och det verkar funka med V3.1.
Har jag förstått det rätt att jag kan skapa en device typ lampa med (system) custom command och sedan under Raw commands Off och ON fält ska/kan lägga in ett anrop till ett script som gör nått med GPIO pinnerna, t ex typ i ON fältet: python /var/www/HomeAutomation/rawcommands/gpio_##_on.py
Är %status% 1 när en enhet ska slåss på och 0 när den ska stängas av?
Så at man t ex in ON och Off fälten skulle kunna lägga ett anrop i den här stilen:
python /var/www/HomeAutomation/rawcommands/gpioscript.py gpio## %status%
Går det även att göra en en dimmer med custom command som skickar dimmernivån i %status% argumentet?
Mvh Aryan
Har jag förstått det rätt att jag kan skapa en device typ lampa med (system) custom command och sedan under Raw commands Off och ON fält ska/kan lägga in ett anrop till ett script som gör nått med GPIO pinnerna, t ex typ i ON fältet: python /var/www/HomeAutomation/rawcommands/gpio_##_on.py
Är %status% 1 när en enhet ska slåss på och 0 när den ska stängas av?
Så at man t ex in ON och Off fälten skulle kunna lägga ett anrop i den här stilen:
python /var/www/HomeAutomation/rawcommands/gpioscript.py gpio## %status%
Går det även att göra en en dimmer med custom command som skickar dimmernivån i %status% argumentet?
Mvh Aryan
Re: Styra raspberry GPIO pinnar
Precis så. Jag har för mig att %status% är 0 eller 1 för en brytare och ett värde mellan 0 och 100 (eller kanske 0 och 255?) för dimrar. Du kan även använda %statustext%, vilken typ är "av" eller "på" (kanske måttligt meningsfullt i ditt fall) samt %deviceid% och %systemdeviceid%.
Tyvärr är det ju lite sisådär med dokumentationen. Jag tror det enklaste är att du till att börja med kör kommando i stil med "echo %name% %status% %whatever% > /tmp/testtext" och så tittar vad det resulterar i...
/Daniel
Tyvärr är det ju lite sisådär med dokumentationen. Jag tror det enklaste är att du till att börja med kör kommando i stil med "echo %name% %status% %whatever% > /tmp/testtext" och så tittar vad det resulterar i...
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Styra raspberry GPIO pinnar
Aryan: post gärna lite exempel på python-scriptet så man kan bli inspirerad
Får man fråga vad du tänkte använda det till?
Får man fråga vad du tänkte använda det till?
Re: Styra raspberry GPIO pinnar
Tack för snabbt svar och tips. Det verkar som att mitt försök med att lägga pluginet "custom command" från HA V3.3 i min HA V3.1 systemplugins map inte funkar fullt ut i varje fall. Det gick bra att skapa en device och slå på och av det osv men Raw command scriptet verkar inte anropas.
I debug loggen skapas en rad med en text: "custom command: changeDeviceName method not implemented” för varje gång jag sparar detta "custom command” device.
Jag har nu i Raw commands fälten:
inget i Learn
Off: python /var/www/HomeAutomation/rawcommands/test.py %status%
On: python /var/www/HomeAutomation/rawcommands/test.py %status%
Skriptet test.py ska för närvarande inte göra något annat än att skriva en text fil i logs.
När det väl funkar att köra egna skript så här tänkte jag försöka styra några relän med RPi GPIO portar beroende på inom och utomhustemperatur och tiden. I mitt fall handlar det om att styrra en pelletspanna/kamin. Återkommer med scriptet när jag har lyckas med detta.
Mvh Aryan
I debug loggen skapas en rad med en text: "custom command: changeDeviceName method not implemented” för varje gång jag sparar detta "custom command” device.
Jag har nu i Raw commands fälten:
inget i Learn
Off: python /var/www/HomeAutomation/rawcommands/test.py %status%
On: python /var/www/HomeAutomation/rawcommands/test.py %status%
Skriptet test.py ska för närvarande inte göra något annat än att skriva en text fil i logs.
När det väl funkar att köra egna skript så här tänkte jag försöka styra några relän med RPi GPIO portar beroende på inom och utomhustemperatur och tiden. I mitt fall handlar det om att styrra en pelletspanna/kamin. Återkommer med scriptet när jag har lyckas med detta.
Mvh Aryan
Re: Styra raspberry GPIO pinnar
Glömde skriva att "echo %name% %status% %whatever% > /tmp/testtext” i rawcommands inte heller skapar nått i /tmp
Re: Styra raspberry GPIO pinnar
Sorry. Missade att du skrev att du kör 3.1. Vi gjorde om ganska mycket i hur plugins funkar mellan 3.1 och 3.2 så det funkar definitivt inte. Å andra sidan är det i vilket fall en väldigt bra idé att uppgradera till senaste versionen.
/Daniel
/Daniel
Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
Re: Styra raspberry GPIO pinnar
Tack för dit svar, jag har uppgraderat till senaste versionen nu, hade lite problem först men det visade sig bero på samma sak som FrankForsberg hade här http://forum.telldus.com/viewtopic.php?f=27&t=6126 ; jag hade php5-mysql isf php5-mysqlnd . Ho mig blev det bara en vit sida så den eleganta kontrollen av installationsskriptet som bl a kollar om man har php5-mysqlnd kommer då inte att funka heller.
Nu funkar allting som det ska vad jag kan se men dessvärre får jag fortfarande inte min custom command device att köra några raw commands.
Ser inte nånting i loggarna som hjälper att hitta felet heller tyvärr.
/Aryan
Nu funkar allting som det ska vad jag kan se men dessvärre får jag fortfarande inte min custom command device att köra några raw commands.
Ser inte nånting i loggarna som hjälper att hitta felet heller tyvärr.
/Aryan
Re: Styra raspberry GPIO pinnar
Gjorde ett litet test till med en enkel test.php fil i HomeAutomation med följande innehåll:
test.py i rawcommands ser ut så här:
När jag anropar test.php skapas som väntad anewfile.txt i logs med följande innehåll:
Jag vet nu säkert att python scriptet funkar och kan anropas av en phpsida.
Om jag försöker med liknande kommando i raw commands fälten
On:
Off:
och slår på och av enheten skapas/ändras tyvärr inte anewfile.txt
/Aryan
Code: Select all
<?php
$command = 'python rawcommands/test.py 55';
exec($command);
?>
Code: Select all
#!/usr/bin/python
import sys
file = open("/var/www/HomeAutomation/logs/anewfile.txt", "w")
file.write("hello world in the new file\n")
file.write(sys.argv[1] + "\n") # get everything after the script name
file.write("and another line\n")
file.close()
Code: Select all
hello world in the new file
55
and another line
Om jag försöker med liknande kommando i raw commands fälten
On:
Code: Select all
python rawcommands/test.py 5
Code: Select all
python rawcommands/test.py 10
/Aryan