Serverside scripting, lokale link aanroepen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Wo0Zzz
  • Registratie: April 2017
  • Laatst online: 31-05 12:33
Mijn vraag
Beste mensen, voor mijn opleiding Domotica zijn wij bezig met het opzetten van een domoticaserver met behulp van een Raspberry Pi, helemaal prima. Dit project is bijna tot z'n einde en ik wil thuis verder hierin. Wij hebben 2 Yamaha MusicCast speakers. Deze kunnen bediend worden door middel van een koppeling tussen MusicCast en Google Home, dit werkt heel omslachtig en de commando's zijn te lang. Nu ben ik er achter dat je ze ook aan kunt sturen door middel van HTTP requests. Klik hier voor PDF met links
Wat ik nu wil proberen, even los van safety. Is dat ik met een script op mijn NAS, welke intern draait en een domeinnaam heeft en van buiten bereikbaar is, de lokale HTTP requests kan aansturen.
Dus laten we zeggen, intern gebruik je: http://192.168.5.219/Yama...v1/main/setPower?power=on en dan schakelt het apparaat in. Wat ik dus graag wil is dat ik: http://contoso.com/yamahacontrol/controls?power=on kan sturen bijvoorbeeld. En dat we met server sided scripting deze interne link kunnen sturen naar de Yamaha speakers.
Of per commando eerst een pagina, dus http://contoso.com/yamaha/on en http://contoso.com/yamaha/off bijvoorbeeld. Als ik eerst die externe commando's meer op het netwerk krijg zodat ik dit aan kan sturen.
Dan kan ik namelijk met IFTTT gaan werken om dit klaar te spelen.

Ik kan me een klein beetje redden in PHP, voornamelijk door veel Googlen en trial and error.
Maar ik heb nu werkelijk geen idee waar ik precies op moet zoeken zeg maar, om dit werkend te krijgen.
Ik had al wel dat ik, als ik de pagina oproep wordt doorgestuurd naar de interne link, dit werkt wel als ik ben aangesloten op interne netwerk maar als ik het dus oproep via 4G ga ik al nat haha.

Ik hoop dat jullie mijn verhaal snappen, en ben benieuwd of het uberhaupt mogelijk is.
Ik wil dus niet de poorten doorsturen, daar deze al gebruikt worden door mijn NAS.

Mvg Jelle

Alle reacties


Acties:
  • +2 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Kortom, je zoekt gewoon een proxy?
NginX of Apache kan dit prima met wat rewrite regels.

Op de meeste merken NAS kan je wel NginX of Apache installeren iig.

[ Voor 28% gewijzigd door McKaamos op 29-10-2019 11:26 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • +1 Henk 'm!

  • CB32
  • Registratie: November 2011
  • Laatst online: 06:45
Je script moet dus je URL afvangen, interpreteren en dan iets uitvoeren met curl. Zoek even naar de curl functie

Acties:
  • 0 Henk 'm!

  • Wo0Zzz
  • Registratie: April 2017
  • Laatst online: 31-05 12:33
Jullie worden bedankt! Ik ga dit eens uitzoeken! Ik draai inderdaad een Synology waar beide servers op actief zijn.
Die CURL is ook een leuke uitdaging om daarnaast eens te proberen, daar kan je echt een API mee schrijven als ik t goed begrijp?

Acties:
  • +1 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

cURL is geen taal. Het is een tool die je kan gebruiken om een link op te roepen zonder een browser te gebruiken. Commandline.
En in b.v. PHP kan je middels exec() curl aanroepen.

Je bouwt een API in PHP, en bij aanroep van een APImethode kan PHP dan cURL gebruiken om je Yamaha apparaat een opdracht te geven.

Iemand een Tina2 in de aanbieding?


Acties:
  • +1 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 03-06 19:53

Matis

Rubber Rocket

McKaamos schreef op dinsdag 29 oktober 2019 @ 12:13:
cURL is geen taal. Het is een tool die je kan gebruiken om een link op te roepen zonder een browser te gebruiken. Commandline.
En in b.v. PHP kan je middels exec() curl aanroepen.
PHP zelf heeft zelf ook curl ondersteuning ingebakken (mits de module ingeladen is).

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 23:15
Met nginx / apache kun je een reverse proxy instellen. Als je dan van buiten (of binnen, maakt niet uit) http://contoso.com/yamahacontrol/controls?power=on aanroept dan zegt je reverse proxy: "Ah, dit verzoek moet afgehandeld worden door http://192.168.5.219/Yama...1/main/setPower?power=on"

Dingen rewriten van yamahacontrol naar YamahaExtendedControl, het tussenvoegen van v1, en power omklussen naar setPower is geen probleem voor een reverse proxy. Je roept daarbij van buitenaf dus letterlijk de interne site aan.

Als die interne site niet aan beveiligingen doet is dit natuurlijk niet zo'n goed idee. "even lost van safety" kan anno 2019 echt niet meer ;) Ik zou dus minimaal zorgen dat je in moet loggen en dat je HTTPS gebruikt. Beide kan de reverse proxy voor je regelen, al zal dat inlogvenster niet heel fancy zijn.

Wil je zelf een website programmeren, dan kom je dus inderdaad uit bij iets als PHP. Dan stuur je het verzoek van de gebruiker niet letterlijk naar die 192.168.5.219 server, maar krijg je het verzoek van de gebruiker om iets te doen, en zul je zelf in je code die verbinding op moeten zetten. Dat is waar CURL om de hoek komt.

Het bouwen en beveiligen van een website is overigens best een klus... Je kunt ook overwegen een VPN op te zetten, en dan via die VPN zelf http://192.168.5.219/Yama...v1/main/setPower?power=on aanroepen.

Waarom wil je trouwens die speakers via het internet aan kunnen zetten? Je maakt het jezelf wel moeilijk :P En hoewel lokaal de beveiliging eigenlijk ook goed moet zijn, kom je er beter mee weg dan wanneer het over het internet onveilig gaat.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Wo0Zzz
  • Registratie: April 2017
  • Laatst online: 31-05 12:33
Hoi Paul,
Excuus, ik heb helaas niet meer gezien dat er nog meer reacties op waren.
Bedankt voor je info!
Even los van beveiliging inderdaad, dat is van latere zorg. Eerst zien dat het werkt.
Maar er is nu ondersteuning met de Google Home speaker vanuit Yamaha zelf, dit werkt overigens alleen in t Engels en heel omslachtig. Als je bijvoorbeeld de speaker aan wilt zetten moet je zeggen: "Hey Google, ask MusicCast to turn Kitchen On"... Dit werkt nog niet vlekkeloos, ik wil dit dus eventueel met IFTTT gaan oplossen, dat ik gewoon kan zeggen: "Hey Google, Kitchen on" bij wijze van. IFTTT wil ik dus die link aan laten roepen. Nu ben ik anders aan het pielen geweest en heb ik het ook werkend dmv van OpenHAB op m'n RPI, deze connect via de OpenHAB cloud met mijn config.
Dus ik ben er redelijk uit, maar vond het wel een uitdaging om werkend te krijgen en gewoon van niemand afhankelijk te zijn. (ja okee, ben ik weer afhankelijk van IFTTT)...

In ieder geval weer bedankt!
Mvg Jelle

Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 22:08
Een Synology Nas heeft standaard reverse proxy functionaliteit aan boord.
Zit in het control panel, application portal, reverse proxy.
Dat kun je daar gewoon voor gebruiken.

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.

Pagina: 1