2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
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:
- pyBulbDriver: maak verbinding met de PlayBulb via BLE gatttool en python.
- pyBulbServer: de pyBulbDriver gebruiken om de playbulb-besturing bloot te leggen via REST API.
- 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:
Telegram Bot met NodeMCU (ESP8266): 3 stappen
Telegram Bot met NodeMCU (ESP8266): Heeft u een bot nodig om meldingen van uw systeem te geven? of iets doen door gewoon een bericht te sturen? Telegram Bot is jouw oplossing!In deze tutorial zal ik Telegram Web en BotFather gebruiken om mijn bot te maken
Batterij-aangedreven lamp die wordt ingeschakeld door het gebruik van magneten! 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Lamp op batterijen die aangaat door het gebruik van magneten!: We weten dat de meeste lampen aan/uit gaan via een fysieke schakelaar. Mijn doel met dit project was om een unieke manier te creëren om de lamp gemakkelijk aan/uit te zetten zonder die klassieke schakelaar. Ik was geïntrigeerd door het idee van een lamp die tijdens dit proces van vorm veranderde
ESP8266 bedienen met de Telegram-app: 7 stappen
ESP8266 bedienen met de Telegram-app: Hé, wat is er, jongens! Akarsh hier van CETech. Heb je je ooit afgevraagd over chatten met je apparaten via een berichten-app? Klinkt raar, toch. Maar vandaag gaan we iets soortgelijks doen. Maak je geen zorgen, je hoeft geen mobiele telefoons te kopen
Een tv repareren die niet kan worden ingeschakeld: 23 stappen
Een tv repareren die niet kan worden ingeschakeld: Moderne flatscreen-tv's hebben een bekend probleem met condensatoren die slecht worden. Als uw lcd- of led-tv niet aangaat of herhaaldelijk klikkende geluiden maakt, is de kans groot dat u honderden dollars kunt besparen door deze eenvoudige reparatie zelf te doen.Ik k
Craigslist: een gids voor de rest van ons! 11 stappen
Craigslist: een gids… voor de rest van ons!: Het is zomer! Dat betekent dat het de beste tijd is om al die rommel in je huis kwijt te raken. Maar zijn Amazon en Ebay te ingewikkeld voor u? Houd je er niet van om artikelen te verzenden, een percentage aan het bedrijf te betalen, of niet lokaal af te kunnen spreken, dan is Craigslist