I thought I’d share this work in progress, based on my previous post here. I am an amateur both in Lua and in KNX… so take with a huge grain of salt.
All these scripts do is open a socket to a defined IP and Port and send a telnet command… then add an “Enter”… then wait for an answer. It closes right after that, as the Pioneer does not like more than one telnet connection at a time and I don’t want to hog the port.
Copy this code into a user library. I called mine user.telnet
--Sends a single telnet command to a host and port --it returns one line answer function telnetsend(host, port, command) nextline = '\r\n' local socket = require("socket") local tcp = assert(socket.tcp()) res, err = tcp:connect(host, port) res, err = tcp:send(command .. nextline) local answer = tcp:receive('*l') tcp:close() return answer end --Sets the volume to a numeric value --takes into account, that Pioneer increments the volume in --2 step intervals. Takes a host ip and port as input. function setvolume(host, port, volumelevel) local currentvolume = getvolume(host, port) if volumelevel > currentvolume then for i = currentvolume, volumelevel -1, 2 do telnetsend(host,port,VOLUME_UP) end else for i = volumelevel, currentvolume-1, 2 do telnetsend(host,port,VOLUME_DOWN) end end currentvolume = getvolume(host, port) return currentvolume end --Returns the current volume function getvolume(host, port) local currentvolume = tonumber(string.sub(telnetsend(host,port,VOLUME_QUERY), 5)) return currentvolume end --Turns reciever on off function soundonoff(host, port, onoff) if onoff == true then telnetsend(host,port,POWER_ON) local status = telnetsend(host,port,POWER_QUERY) if status == POWER_ONSTATE then return true else alert("Could not turn on sound") end else telnetsend(host,port,POWER_OFF) local status = telnetsend(host,port,POWER_QUERY) if status == POWER_OFFSTATE then return false else alert("Could not turn off sound") end end end
and put this code into a separate user.script. I called mine user.pioneer
Continue reading “LogicMachine control Pioneer AVR via telnet” »