D Derbyboy skrev:
Nej, har inte. Ser ut såhär:

C:\Users>timeout
ERROR: Invalid syntax.
Type "TIMEOUT /?" for usage.
C:\Users>
Jo, det har du. Ser lovande ut.

/Höghus
 
  • Gilla
Nyfniken och 2 till
  • Laddar…
D
Sådär!

Kommandotolkfönster med kod för att kontrollera stereons status via HTTP API.

Det är alltså först frågan som behöver ställas (är stereon on (1) eller off (0)).

Jag tänker att det enklaste just nu blir att få ihop bara en fråga och sen beroende på svar (1 elller 0) så händer olika saker.

1 = Stereon är igång ingenting behöver göras

0 = Stereon är avstängd då behöver följande skickas:

http://192.168.0.92/httpapi.asp?command=setPlayerCmd:switchmode:bluetooth
 
  • Gilla
RoAd
  • Laddar…
Prova att spara detta i en fil på skrivbordet som heter tex speakers.bat och dubbelklicka sedan på den

@echo off
set URL=http://192.168.0.92/httpapi.asp?command=
set COMMANDQ=IOSimuread:2
set COMMANDON=setPlayerCmd:switchmode:bluetooth

:WHILE
timeout /t 600
for /f "tokens=2" %%i in ('curl %URL%%COMMANDQ%') do set RESULT= %%i
if %RESULT% == 0 call SWITCHON
goto WHILE
:EndWhile

:SWITCHON
curl %URL%%COMMANDON%

goto :EOF


/Höghus
 
  • Gilla
Derbyboy
  • Laddar…
D
Fan va grymt men tyvärr fungerade det inte:

Skärmdump av ett öppet batch-skript i en textredigerare med markerad kod.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder


Kan det ha att svaret faktiskt inte är 0 eller 1 utan 2,0 och 2,1?

Kommandotolkfönster som visar resultatet av en curl-begäran med svaret "2,0" och "2,1".
 
tokens=2 betyder den andra delen av svaret efter kommatecknet så skriptet bör plocka upp noll eller ett.
Kan du posta hur det såg ut när du körde?
Plocka bort @echo off så blir det lite output

/Höghus
 
  • Gilla
Derbyboy
  • Laddar…
D
R
D Derbyboy skrev:
Jag har försökt att få till detta av och till i snart tre år, varit i kontakt med audio pros support mm. Högtalarna lyssnar på anropen som finns här:

[länk]

För att fråga högtalarna om de är on eller off skickar jag idag följande från webläsaren:

[länk]

Högtalaren svarar 1 om den är på och 0 om den är avstängd.

Nästa fråga som behöver ställas är:

[länk]

högtalaren svarar:

{"type":"0","ch":"0","mode":"41","loop":"0","eq":"0","status":"stop","curpos":"24000","offset_pts":"0","totlen":"383000","Title":"556E6B6E6F776E","Artist":"556E6B6E6F776E","Album":"556E6B6E6F776E","alarmflag":"0","plicount":"0","plicurr":"0","vol":"50","mute":"0"}

i svaret är det Mode och status som är relevanta. Mode 41 är inte BT.
Svaret är i formatet json. Det hanteras automatiskt av powershells Invoke-RestMethod och omvandlas till användbara objekt så det är mycket vunnet om man kan använda det.

Höghus Höghus skrev:
Prova att spara detta i en fil på skrivbordet som heter tex speakers.bat och dubbelklicka sedan på den

@echo off
set URL=[länk]
set COMMANDQ=IOSimuread:2
set COMMANDON=setPlayerCmd:switchmode:bluetooth

:WHILE
timeout /t 600
for /f "tokens=2" %%i in ('curl %URL%%COMMANDQ%') do set RESULT= %%i
if %RESULT% == 0 call SWITCHON
goto WHILE
:EndWhile

:SWITCHON
curl %URL%%COMMANDON%

goto :EOF


/Höghus
Jag bara gissar att även det första svaret borde vara json om nu det andra är det. Då måste det parsas först.
 
D
Jag har fått igång powershell:

Kör den här lilla jäkeln:


Skärmdump av en PowerShell-kommando: Invoke-WebRequest med en webbadress och parametrar.

Och får svaret såhär:
 
  • Skärmdump av Windows PowerShell med resultatet av ett körningskommando, visande textbaserad output.
    Inloggade ser högupplösta bilder
    Skapa konto
    Gratis och tar endast 30 sekunder

Bästa svaret

Unikt namn
  • Gilla
Derbyboy
  • Laddar…
Fnuttar är viktiga.

REM @echo off

set "URL=http://192.168.0.92/httpapi.asp?command="
set COMMANDQ=IOSimuread:2
set COMMANDON=setPlayerCmd:switchmode:bluetooth

:WHILE
timeout /t 30
for /f "tokens=2" %%i in ('curl "%URL%%COMMANDQ%"') do set RESULT= %%i
if %RESULT% == 0 call SWITCHON
goto WHILE
:EndWhile


:SWITCHON
curl "%URL%%COMMANDON%"

goto :EOF

/Höghus
 
R RoAd skrev:
Svaret är i formatet json. Det hanteras automatiskt av powershells Invoke-RestMethod och omvandlas till användbara objekt så det är mycket vunnet om man kan använda det.
0,2 är inte json-format. Det saknas måsvingar och diverse jox.
Här kan du se om det är json-syntax JSON Online Validator and Formatter - JSON Lint

/Höghus
 
D Derbyboy skrev:
[media]
Det ser ut att vara tecknet = som försvinner i scriptet. Se 3:e raden från slutet, sista skärmbilden.

Förslag. Ändra rad 2 och 8. Flytta =
2: set URL=http://192.168.0.92/httpapi.asp?command=
8: for /f "tokens=2" %%i in ('curl %URL%%COMMANDQ%') do set RESULT= %%i.
till där textsträngen sätts ihop
2: set URL=http://192.168.0.92/httpapi.asp?command
8: for /f "tokens=2" %%i in ('curl %URL%=%COMMANDQ%') do set RESULT= %%i

Edit: Lite sen med det svaret... :confused:
 
Redigerat:
R
Höghus Höghus skrev:
0,2 är inte json-format. Det saknas måsvingar och diverse jox.
Här kan du se om det är json-syntax JSON Online Validator and Formatter - JSON Lint

/Höghus
Jag antog att det var p.g.a. kommandot som användes för att hämta svaret. Vissa av dem (exempelvis Invoke-RestMethod) verkar automatiskt parsa json.

Output som visas sist i #14 är i.a.f. json. Lustigt om de blandat det med annat i samma API.

APIt verkar vara detta, eller en variant av det: http://airscope-audio.net/core2/pdf/airscope-module-http.pdf

Men jag ska inte lägga mig i för mycket. Har aldrig skrivit en rad i powershell och jobbar nästan uteslutande i Linux.

EDIT: IOSimu* anropen verkar vara någon form av direktaccess till GPIOs och verkar mycket riktigt inte vara i JSON-format. Så det är tydligen lite blandat.
 
blackarrow blackarrow skrev:
Det ser ut att vara tecknet = som försvinner i scriptet. Se 3:e raden från slutet, sista skärmbilden.

Förslag. Ändra rad 2 och 8. Flytta =
2: set URL=[länk]=
8: for /f "tokens=2" %%i in ('curl %URL%%COMMANDQ%') do set RESULT= %%i.
till där textsträngen sätts ihop
2: set URL=[länk]
8: for /f "tokens=2" %%i in ('curl %URL%=%COMMANDQ%') do set RESULT= %%i

Edit: Lite sen med det svaret... :confused:
Testade din rad 8 innan jag hittade att dubbelfnuttar funkar. Dos rensar bort = inom parenteserna om man inte dubbelfnuttar miljövariabeln. Och curl hade inget emot dubbelfnuttar som tur var.

/Höghus
 
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.