• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Zdravím hosta! Přihlášení Registrace


Hodnocení tématu:
  • 1 Hlas(ů) - 5 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
RPi jako chytrá zásuvka
#1
Information 
Velice mile mě překvapilo, jak snadno lze pomocí RPi ovládat zásuvku a to bez velkých finančních nákladů. Celé to začalo tím že jsem pátrál po způsobu, jak elegantně vypínat reproduktor, který nemá dálkový ovladač pouze integrovaný vypínač. Výsledkem bylo zjištění že za drobný peníz se dají sehnat relé moduly s pracovním napětím 5V, takže není problém ovládat pomocí GPIO pinů na RPi.
Celkem jsem objednal tři verze z aukčního porálu ebay, taktéž lze sehnat i v českých eshopech. Nemá cenu zde vkládat odkazy, postačí zadat klíčová slova ( Relay module 5V ) a máte na výběr několik stránek těchto modulů.

Přehled zakoupených relátek:

1. Elektromagnetické relé (oba moduly mají shodné relátko od firmy Songle):
       
Pracovní napětí: 5V
Maximální výstup: 250V/10A AC nebo 30V/10A DC
Cena: cca 20 Kč

2. SSR relé (Omron):
   
Pracovní napětí: 5V
Maximální výstup: 240V/2A AC
Cena: cca 38 Kč

Samozřejmě je možné zakoupit moduly s více kanály nebo relátka určená pro vyšší napětí a proudy, ale pro mou potřebu jsou zmíněné typy naprosto dostačující.
Nakonec jsem se rohodl použít SSR relé (Solid State Relay), které má několik výhod:
- vyšší životnost
- rychlost spínání (cca 10 - 50 ms )
- bez hluku (neobsahuje mechanické části)
- dostatečné maximální proudové zatížení (reproduktory 40W, maximálně 0.2A)

Náčrt propojení s RPi:
   

Modul ovládám pomocí systému LibreELEC, kde je potřeba nainstalovat GPIO knihovnu, doplněk Raspberry Pi Tools (najdete v repozitáři LibreELEC), pak už jen jednoduchý skript, kterým budete relé spínat a rozpínat.

rele.on.off.py (pro SSR):
Kód:
import sys
sys.path.append('/storage/.kodi/addons/virtual.rpi-tools/lib')
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)

if GPIO.input(7):
       GPIO.output(7,False)
       print "rozepnuto" #rozepne rele a vypise informaci o stavu  "rozepnuto"
else:
       GPIO.output(7,True)
       print "sepnuto"  #sepne rele a vypise informaci o stavu "sepnuto"

Číslo ovládacího pinu je potřeba upravit podle vašeho zapojení v mém případě je to pin č. 7. Skript funguje pro oba stavy, obsahuje totiž podmínku, pokud je sepnuto tak se rozepne a naopak, pokud je rozepnuto tak sepne. Nyní si stačí vybrat čím budete relé ovládat, může to být dálkový ovladač, mobilní aplikace, případně skript aktivovat k nějaké funkci (doplněk Kodi Callbacks). Osobně jsem použil volné tlačítko na ovladači (HDMI-CEC), kde stačilo přemapovat a vložit parametr Runscript(cesta ke skriptu).

Seznam použitých komponent:

-  napájecí kabel z vyřazeného PC (0 Kč)
-  modul SSR (38Kč)
-  2x průchodka PR7 (10 Kč)
-  krabička (28 Kč)
-  koncovka - zásuvka (30 Kč)
+ pár šroubků a propojovací kabely do GPIO

Výsledek:
   

Jak je vidět celkové náklady jsou něco málo přes 100 Kč, s výsledkem jsem naprosto spokojen, zapínání reproduktorů funguje bezchybně a není třeba další ovadač, no prostě paráda 82 .  Každý si určitě najde vlastní potřebu využití, ti zdatnější  můžou jít o něco dál a spínání provázat s nějakým čidlem nebo časovou instrukcí pomocí [Only registered and activated users can see links Click here to register] .
Na závěr bych upozonil, že zapojení relé by měla provádět osoba s patřičnou způsobilostí v elektrotechnice nebo alespoň si nechte zkontrolovat vaše řešní  102 4 .
RPi 3 B+ (BerryBoot) - LibreELEC 8.2.5 + RetroPie 4.4 + Raspbian Stretch
Orange Pi One - OpenELEC
7.0
 
Citovat
#2
Thumbup Idea Thumbup
3x RPi2B → L8.2.3 \ 1x RPi3B → L8.2.3 \ HTPC → L8.2.3 \ Xbox ONE S  18 \ X96 - S905X 2/16 → LE 8.2.3 \ NAS Synology 212J → DSM 6.2
 
Citovat
#3
To je paradni moznost.
Tohle vyuziju na spinani napajeni pro led ambilightu, aby pasek nebyl trvale pod napetim. Bude stacit si do spousteciho scriptu hyperionu pridat zavolani na tvuj prepinaci rele.on.off.py

Diky za inspiraci!!!
 
Citovat
#4
@wencaS
jsem rád že se návod bude někomu hodit, jinak informace o stavu se vypíše pouze v konzoli, drobnou úpravou skriptu je možné poslat informaci přímo do Kodi formou Notifikace. Není problém spínání relé zautomatizovat pomocí doplňku Callbacks, například na aktivaci/deaktivaci screensaveru nebo spuštění/ukončení přehrávání.....
RPi 3 B+ (BerryBoot) - LibreELEC 8.2.5 + RetroPie 4.4 + Raspbian Stretch
Orange Pi One - OpenELEC
7.0
 
Citovat
#5
To vypadá moc hezky. Právě si doma hrají se svým prvním skriptem a zjistil jsem, že se s tím dají dělat psi kusy :)

Jsem uživatel používající parádního handheldu BlackBerry Passport :)
Televize: Sony   OS: hloupá
RaspBerry: Pi 3B   OS: libreELEC 7.0.2   Zdroj: originální 2.5 A   Uložiště: SONY class 10 70MB/s 16GB
Notebook: SonyVaio (VGN-FW51ZF)   OS: elementary OS 0.3.2 Freya 64-bit (Ubuntu 14.04)   OS MMC: Kodi 16.1
 
Citovat
#6
Prosím o pomoc. Chtěl jsem také tuto chytrou zásuvku, jenže jsem úplně mimo ohledně Linuxu...
Script se mě povedlo vytvořit, bohužel nejde spustit. 8 Jestli to tak nějak chápu, problém je v nastavení práv? 
Díky.

   
 
Citovat
#7
Tak tohle bude boj... [Obrázek: 10.gif], script již spustit jde, ale vypisuje chybu:
SyntaxError: Non-ASCII character '\xc3' in file rele.on.off.py on line 12, but no encoding declared; see [Only registered and activated users can see links Click here to register] for details

Poradí někdo co s tím?
 
Citovat
#8
@kodiman
1. na systemech LibreELEC/OpenELEC se nepoužívá příkaz sudo, zadávej bez něj !
2. pro spuštění skriptu zadej celou cestu podle umístění, např. python /storage/skripty/rele.on.off.py
3. nevím co je obsahem tvého skriptu ??
RPi 3 B+ (BerryBoot) - LibreELEC 8.2.5 + RetroPie 4.4 + Raspbian Stretch
Orange Pi One - OpenELEC
7.0
 
Citovat
#9
Jj, s tím sudo jsem na to přišel, díky. 
Co se týká toho scriptu, tak jsem zkopíroval přesně ten, co máš v prvním příspěvku a hází to tu chybu. 
Pokud z toho scriptu vymažu ty zakomentované stavy začne to parádně fungovat. 
Nevím co mu tak vadí - diakritika?
Teď už bych jen potřeboval nasměrovat, jak to namapovat na DO a ovládat pomocí mobilu. 
S tím DO se použije ten Keymap editor nebo je jiný postup? 
Co se týká aplikace, tak mám Yatse v placené verzi. Je tam možnost vlastních příkazů. 
Lze tam tedy nějak spustit ten script nebo musím mít jinou apku?  Díky za pomoc.

   
 
Citovat
#10
Možná ti bude nakopnutím co používám na přepínání ambilajtu (sebráno zde v diskuzi o ambilajtu).
Stáhni [Only registered and activated users can see links Click here to register]
a uprav si cestu ke svému scriptu, případně tlačítko, já to mám na zelené a ulož ho jako  /storage/.kodi/userdata/keymaps/remote.xml (pozor na příponu, server mi xml soubory blokuje proto je tam jako txt).
 
Citovat
#11
Komentar do skriptu jsem vkladal az zde,.. nejspis vadi uvozovky, tak je smaznu. (Nakonec za to mohla česká diakritika, uvozovky nevadi - opraveno)

Mobilnich aplikaci je spoustu ja pouzivam RasPi Check a Far Commander. Podrobnejsi popis jsem daval zde na forum v sekci Android.

Co se tyce dalkoveho ovladace, pouzil jsem Keymap editor a vybrane tlacitko premapoval na libovolnou funkci,
tim se vytvori soubor gen.xml (/storage/dal uz si nepamatuji :-) no a v nem pak zmenis funkci na Runscript(cesta ke skritpu rele.on.off.py).
RPi 3 B+ (BerryBoot) - LibreELEC 8.2.5 + RetroPie 4.4 + Raspbian Stretch
Orange Pi One - OpenELEC
7.0
 
Citovat
#12
Super, díky vám. Zase jsem se naučil něco nového.
 
Citovat
#13
@Petrvald
Ještě by se mě líbilo toto:
...drobnou úpravou skriptu je možné poslat informaci přímo do Kodi formou Notifikace.
Může poprosit o tu úpravu.
 
Citovat
#14
Spínaní relé s notifikační zprávou do Kodi:
Kód:
import sys
sys.path.append('/storage/.kodi/addons/virtual.rpi-tools/lib')
import RPi.GPIO as GPIO
import time
import os

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.OUT)

if GPIO.input(7):
       GPIO.output(7,False)
       os.system('kodi-send --action="Notification(Rele,rozepnuto,3000)"')
else:
       GPIO.output(7,True)
       os.system('kodi-send --action="Notification(Rele,sepnuto,3000)"')

Text zpravy si uprav dle potřeby, číslo je délka zobrazení v milisekundách (3s)
RPi 3 B+ (BerryBoot) - LibreELEC 8.2.5 + RetroPie 4.4 + Raspbian Stretch
Orange Pi One - OpenELEC
7.0
 
Citovat
#15
Díky. Paráda. Funguje to na jedničku.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)