Inhoudsopgave:

TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram - Ajarnpa
TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram - Ajarnpa

Video: TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram - Ajarnpa

Video: TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram - Ajarnpa
Video: Голубая стрела (1958) фильм 2024, Juli-
Anonim
TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram
TextPlayBulb: REST ingeschakeld PlayBulb met Raspberry Pi 3, BLE en Telegram

Deze instructable laat zien hoe je verbinding kunt maken met een PlayBulb Color bluetooth LED-lamp met behulp van Python, een Raspberry Pi 3 en Bluetooth-bibliotheek en om de bedieningselementen uit te breiden via een REST API voor een IoT-scenario, en als een boun laat het project ook zien hoe je de REST API om uw PlayBulb te besturen via een IM-tekstclient, bijvoorbeeld Telegram, zoals via sms met je geautomatiseerde huis praten.

Dit project is opgebouwd rond 3 modules:

  1. pyBulbDriver: maak verbinding met de PlayBulb via BLE gatttool en python.
  2. pyBulbServer: de pyBulbDriver gebruiken om de playbulb-besturing bloot te leggen via REST API.
  3. pyBulbMessenger: verbinding maken met een telegrambot om opdrachten te verzenden en ontvangen via een telegramclient die op een smartphone is geïnstalleerd, en de REST API gebruiken om opdrachten naar de PlayBulb te sturen.

Je kunt het project klonen via git repository:

Doel van het project:

Om een basistool te maken voor interactie met uw lamp via verschillende modaliteiten, zoals sms'en voor nu, kunnen toekomstige scenario's spraakopdrachten, gebaren naar de lamp, enz. omvatten.

Andere bronnen die worden gebruikt om dit instructable te maken:

  • PlayBulb Color Bluetooth-protocol:
  • Python verbinden met Playbulb via Bluetooth:
  • De telegrambot instellen:

Bijdrage

pyBulbDriver is uitgebreid om flexibeler te zijn en geparametriseerd voor gemakkelijke toekomstige uitbreiding, waardoor een scenario wordt gebouwd waarmee u kunt spelen met het sms'en van uw lamp. Eenvoudige interface om te testen en te prutsen.

Beperking

De driver is geschreven voor PlayBulb Colour, voor andere typen PlayBulb, b.v. Origineel of kaars, de bluetooth-code in pyBulbDriver moet worden gewijzigd volgens het bovengenoemde protocol.

U moet een telegramaccount registreren en een api-sleutel krijgen, die u toevoegt in de pyBulbMessenger.py, volg de instelling van de telegrambot in Andere bronnen.

Stap 1: Het project opzetten

1. Uw API-sleutel ophalen van Telegram

> Volg de huidige instructable om uw API-sleutel te krijgen

> Voeg uw api-sleutel toe aan variabele api in pyBulbMessenger.py

2. Uw PlayBulb-naam instellen in pyBulbDriver

> Om ervoor te zorgen dat de gatttool het schrijfapparaat kan vinden, stelt u uw apparaatnaam in die moet worden gescand met pyBulbDriver.scanForBulb("PLAYBULB COLOUR"). Voorbeeld is te vinden in pyBulbServer.py om uw REST-server in te stellen

3. Om het project te starten

> Je moet eerst pyBulbServer.py starten, gevolgd door pyBulbMessenger.py voor het sms'en. U kunt de pyBulbServer-opdrachten testen met CURL.

4. Benodigd materiaal:

> Raspberry Pi 3 en PlayBulb Color of PlayBulb Candle

> Telegram voor Android of iOS installeren

5. Installatie van Rasberry Pi 3 LE Bluetooth:

www.elinux.org/RPi_Bluetooth_LE

Stap 2: Door de code lopen

pyBulbDriver.py

pyBulbDriver bevat de driverklassen voor verbinding met de PlayBulb via BLE

pyBulbDriver kan ook worden gebruikt voor andere generieke projecten, omdat het alleen de code bevat om playBulb-verbindingen te scannen en in te stellen.

De belangrijkste API's voor de gebruikerstoepassingsinterface:

  • scanForBulb(apparaatnaam:String) > Scannen naar de PlayBulb of PlayBulbs via hun apparaatnaam
  • setBulbColor(s:int, r:int, g:int, b:int) > De waarden voor helderheid en RGB-kleur (0 tot 255) definiëren
  • setBulbEffect(s:int, r:int, g:int, b:int, mode:int, onbeat:int, offbeat:int) > Gelijk aan setBulbColor, maar bevat het type effect en snelheid. Raadpleeg voor meer informatie de sectie Kleurprotocol Effecten

In deze klasse vindt u ook andere hulpmethoden die bedoeld zijn voor het controleren van de gegevensintegriteit en niet voor de gebruikersinterface

  • convertRGBToHexaCmd(s, r, g, b)
  • convertIntToHex(getal)
  • checkModeAndSpeed(mode, offbeat, onbeat)
  • checksRGBInBounds(s, r, g, b)

pyBulbServer.py

pyBulbServer stelt de interface van de gebruikerstoepassing bloot aan REST-hyperlinks met behulp van PUT en JSON om gegevens naar de pyBulbDriver te verzenden en te ontvangen. Ook de scan en initialisatie van de BLE-verbinding wordt gemaakt wanneer de server wordt geactiveerd.

pyBulbResource(Resource) kanaliseert de aanroepen naar de REST-server met behulp van kleur en effect om de bulb-opdracht te definiëren.

Voorbeeld Voor het besturen van een effect:

127.0.0.1/bulb/effect

JSON POST > {data':'{"s":0, "r":255, "g":255, "b":255, "m":1, "on":15, "off":15 }'}

pyBulbMessenger.py

Ten slotte is pyBulbMessenger verantwoordelijk voor de interface met de Telegram-bot die is verbonden met uw telegram-smartphoneclient. Voor meer informatie over het configureren en verbinden met een telegrambot, kijk op

cmdHandler(bot, update) is waar de tekstopdrachten worden gedefinieerd en verbonden met de PlayBulb via de RESTful API.

Momenteel heeft het project alleen tekst, een ander doel is om ook opgenomen spraakberichten te verzenden die naar een spraakherkenner zouden worden gestuurd om andere opdrachten te activeren (nog niet geïmplementeerd).

Stap 3: Conclusie

Het huidige architectuurontwerp ging meer over vereenvoudiging dan over schaalbaarheid. Ontbrekende groepsconnectiviteit, ook meer toepassingen met betrekking tot het sms'en van de lamp, hetzij voor rechtstreeks commando of speelse interactie, zijn nog in onderzoek.

Door je te abonneren op git repo of te volgen, komen er meer details over deze updates. De reden voor een dergelijk project was om de playBulb te koppelen en een REST-interface te creëren voor gemakkelijke ontwikkeling in een IoT (internet of things-scenario), maar ook om de mogelijkheid te openen om verschillende modaliteiten te gebruiken via het IM Client-telegram, zoals afbeeldingen, spraak en tekst om te interageren met apparaten vanuit een onderzoeksperspectief.

Aanbevolen: