Exponering av Tellstick via RESTful (web services)
Posted: Fri Mar 17, 2023 9:45 am
Håller på att implementera ett python-program för att exponera Tellstickens gränsytor via RESTful (web services) genom att använda telldus-core-biblioteket.
Projektet heter remotestick-server och koden hittar ni här: http://github.com/pakerfeldt/remotestick (under remotestick-server/)
Checka gärna ut de båda python-skripten och provkör. Det finns en hel del kvar att göra fortfarande dock. T.ex. så är autentiseringen just nu hårdkodad till test / test. Autentisering sker just nu med vanlig Basic Authentication i HTTP.
En annan grej att fixa är mer sofistikerad inläsning av telldus-core. Just nu letar den efter "telldus-core" vilket gör att den "out-of-the-box" bara fungerar i Linux under förutsättning att LD_LIBRARY_PATH innehåller sökväg dit libtelldus-core.so ligger. Tills vidare går det dock bra att editera RemoteStickServer.py och ändra "telldus-core" till t.ex. "TelldusCore" för att det ska fungera i Mac OS X.
Hittills så fungerar följande metoder:
GET /devices.xml
Hämtar alla devices
GET /devices/X.xml
Hämtar en specifik device.
X är device ID.
POST /devices.xml
skapar en ny device. Post-parametrarna som godtas är:
name, model, protocol och parameters.
parameters i sin tur är en space-separerad lista med paramnyckel=paramvärde par.
T.ex: name=name=Test&model=selflearning-dimmer:nexa&protocol=arctech¶meters=house=A unit=1
PUT /devices/X.xml
Ändrar en device.
X är device ID. Övriga parametrar läses in som POST precis som i fallet ovan.
DELETE /devices/X.xml
Tar bort device med ID X.
GET /devices/X/on.xml
Slår på device med ID X.
GET /devices/X/off.xml
Slår av device med ID X.
GET /devices/X/dim/LEVEL.xml
Sätter dimmern för device med ID X till LEVEL.
Mer utförlig och up-to-date dokumentation av gränsytorna kommer ut på wikin på github så fort jag hinner. Men som sagt, det återstår en hel del arbete kvar att göra det riktigt generellt.
Projektet heter remotestick-server och koden hittar ni här: http://github.com/pakerfeldt/remotestick (under remotestick-server/)
Checka gärna ut de båda python-skripten och provkör. Det finns en hel del kvar att göra fortfarande dock. T.ex. så är autentiseringen just nu hårdkodad till test / test. Autentisering sker just nu med vanlig Basic Authentication i HTTP.
En annan grej att fixa är mer sofistikerad inläsning av telldus-core. Just nu letar den efter "telldus-core" vilket gör att den "out-of-the-box" bara fungerar i Linux under förutsättning att LD_LIBRARY_PATH innehåller sökväg dit libtelldus-core.so ligger. Tills vidare går det dock bra att editera RemoteStickServer.py och ändra "telldus-core" till t.ex. "TelldusCore" för att det ska fungera i Mac OS X.
Hittills så fungerar följande metoder:
GET /devices.xml
Hämtar alla devices
GET /devices/X.xml
Hämtar en specifik device.
X är device ID.
POST /devices.xml
skapar en ny device. Post-parametrarna som godtas är:
name, model, protocol och parameters.
parameters i sin tur är en space-separerad lista med paramnyckel=paramvärde par.
T.ex: name=name=Test&model=selflearning-dimmer:nexa&protocol=arctech¶meters=house=A unit=1
PUT /devices/X.xml
Ändrar en device.
X är device ID. Övriga parametrar läses in som POST precis som i fallet ovan.
DELETE /devices/X.xml
Tar bort device med ID X.
GET /devices/X/on.xml
Slår på device med ID X.
GET /devices/X/off.xml
Slår av device med ID X.
GET /devices/X/dim/LEVEL.xml
Sätter dimmern för device med ID X till LEVEL.
Mer utförlig och up-to-date dokumentation av gränsytorna kommer ut på wikin på github så fort jag hinner. Men som sagt, det återstår en hel del arbete kvar att göra det riktigt generellt.