Voor een nieuwe toffe escaperoom in aanbouw ben ik gevraagd om het hele verlichtingsstuk op me te nemen. De bedoeling is dat de verlichting flink interactief 'meebeweegt' op wat er op dat moment in de verschillende kamers aan de hand is, om zo de sfeer flink te versterken. Dit gaat op basis van een Philips HUE bridge met daaraan gekoppeld een 30-tal lampen en switches (dit was al aangeschaft voor ik gevraagd werd). Super leuke uitdaging!
Via de reguliere (Android / iOS) apps loop je dan echter al snel tegen limieten aan dus als rechtgeaarde Tweaker ben ik in de API gedoken (https://developers.meethue.com/) en heb de meeste calls nu redelijk onder de knie.
Ik ben echter geen programmeur dus om de boel een beetje overzichtelijk te houden heb ik alle overzichten, berekeningen etc. in een spreadsheet gezet, in dit geval Google Sheets. Deze is de afgelopen weken tot een flink monsterformaat uitgegroeid en hiermee kan ik inmiddels vrij makkelijk een API call voorbereiden (bijvoorbeeld om lichtgroepen of scenes aan te maken, aan te roepen, te wijzigen etc.) met als resultaat een curl GET / POST / PUT commando die een URL aanroept met JSON payload. Dit commando copy-paste ik vervolgens in een (bash) console en voilà, de bridge reageert.
Dit werkt ook als ik niet op locatie ben, middels een HUE emulator (http://steveyo.github.io/Hue-Emulator/) die ik lokaal op mijn laptop kan starten.
De volgende logische stap leek mij vanuit Google Sheets rechtstreeks de API call naar de bridge te kunnen sturen. Dus ik ben in Gscript gedoken, heb zowaar de introductie Javascript gedaan, prachtige mogelijkheden ontdekt om rechtstreeks GET / POST / PUT requests te kunnen versturen (en ontvangen), notabene met support voor JSON. Kwestie van nog even doorklooien en de boel zou vast gaan werken.
Maarrrr... De HUE bridge en de emulator hebben een local IP en zijn niet via het internet bereikbaar. En daar kan Google Sheets niet mee overweg lijkt het. Mijn eerste poging om iets van een koppeling proberen te maken strandde vrij rap:
Zodra ik de code run, krijg ik de volgende foutmelding:
Mijn vraag is dus nu - zijn er stiekem toch opties in Gscript / Javascript om code 'client-side' te laten uitvoeren zodat ik toch Google Sheets kan laten babbelen met de HUE bridge? Of ga ik de boel toch moeten overhevelen naar lokaal?
Any tips are most welcome
Via de reguliere (Android / iOS) apps loop je dan echter al snel tegen limieten aan dus als rechtgeaarde Tweaker ben ik in de API gedoken (https://developers.meethue.com/) en heb de meeste calls nu redelijk onder de knie.
Ik ben echter geen programmeur dus om de boel een beetje overzichtelijk te houden heb ik alle overzichten, berekeningen etc. in een spreadsheet gezet, in dit geval Google Sheets. Deze is de afgelopen weken tot een flink monsterformaat uitgegroeid en hiermee kan ik inmiddels vrij makkelijk een API call voorbereiden (bijvoorbeeld om lichtgroepen of scenes aan te maken, aan te roepen, te wijzigen etc.) met als resultaat een curl GET / POST / PUT commando die een URL aanroept met JSON payload. Dit commando copy-paste ik vervolgens in een (bash) console en voilà, de bridge reageert.
Dit werkt ook als ik niet op locatie ben, middels een HUE emulator (http://steveyo.github.io/Hue-Emulator/) die ik lokaal op mijn laptop kan starten.
De volgende logische stap leek mij vanuit Google Sheets rechtstreeks de API call naar de bridge te kunnen sturen. Dus ik ben in Gscript gedoken, heb zowaar de introductie Javascript gedaan, prachtige mogelijkheden ontdekt om rechtstreeks GET / POST / PUT requests te kunnen versturen (en ontvangen), notabene met support voor JSON. Kwestie van nog even doorklooien en de boel zou vast gaan werken.
Maarrrr... De HUE bridge en de emulator hebben een local IP en zijn niet via het internet bereikbaar. En daar kan Google Sheets niet mee overweg lijkt het. Mijn eerste poging om iets van een koppeling proberen te maken strandde vrij rap:
code:
1
2
3
4
| function GETURLTEST() { var response = UrlFetchApp.fetch('http://127.0.0.1:8000/api/newdeveloper/lights'); Logger.log(response.getContentText()); } |
Zodra ik de code run, krijg ik de volgende foutmelding:
Logisch ook (wellicht) omdat de scripts natuurlijk op de servers van Google uitgevoerd worden.Exception: Bad request: http://127.0.0.1:8000/api/newdeveloper/lights (line 3, file "getUrlTest")
Mijn vraag is dus nu - zijn er stiekem toch opties in Gscript / Javascript om code 'client-side' te laten uitvoeren zodat ik toch Google Sheets kan laten babbelen met de HUE bridge? Of ga ik de boel toch moeten overhevelen naar lokaal?
Any tips are most welcome
"I'll just use my Go-Go-Gadget handbook!"