Net.FTcp NIl value

Hallo ich möchte mein Gerät ansteuern.
In der VD funktioniert dies auch, aber wenn ich es in eine Szene einbaue, bekomme ich die Fehlermeldung:
„attempt to Index global ‚Net‘ (a NIL value)“

woran kann das liegen (PS für x und y stehen Zahlen da un das Port ist auch nicht das hier genannte)?

local ip = ‚192.168.x.y‘
local port = 5814
tcpSocket = Net.FTcpSocket(ip,port)
tcpSocket:setReadTimeout(1000)

Für eine Szene gibt es andere Befehle.
Ich schicke z.B. was an ein Pretzelboard (und das schickt was zurück).

ip_port= „192.168.X.Y:PortNr“
http= net.HTTPClient({timeout=5000})

function datenEmpfang(resp)
local daten= resp.data
print(„response:“, resp.status, daten)
end

function senden(a)
print(„sende: >“…a…"<")
http:request(„http://“…ip_port…"/"…a,
{ error= function(err)
print("Error: "…err)
end,
success= datenEmpfang
})
end

und dann z.B.
senden(„daten?a=2&b=3“)

Viel Spaß weiterhin!

vielen Dank, ich denke das funktioniert soweit, allerdings will die Device es noch nicht, ich bekomme stets „Operation cancelled“. Ich sende so etwas wie : SET,1:ONOFF,ON das sind die Kommandos, die auch der Modul Hersteller Intensis in seiner VD verwendet. Da muss ich nochmal forschen, warum er dies in der Szene nicht mag.

Mittlerweile funktioniert alles und ich steuer über eine VD die Original von Daniel Corado aus Spanien stammt. VD anbei


IP Adresse ist die der Intensis in Eurem LAN und TCP Port 3310
Intesis_Mitsubishi.zip (5,9 KB)

Dazu noch ein paar Code Schnipsel für eine Routine die ich nutze wenn man heimkommt:

local Klima = {}
Klima[„Wohnzimmer“] = {ID=617, Temp=22}
Klima[„Schlafzimmer“] = {ID=618, Temp=18}
----- Stopt zuviele Szenen -----
if (HC2:countScenes()>1) then
HC2:abort();
end

– farbige Debug und Push Ausgabe
function Display (color, message, DevId)
HC2:debug(string.format(’<%s style=„color:%s;“>%s’, „span“, color, message, „span“));
if DevId == 0 then HC2:call(HC2:getGlobalValue(‚AdminID‘), ‚sendPush‘, message)
elseif DevId ~= 999 then HC2:call(DevId, ‚sendPush‘, message)
end
end
function pushKlima (ID, Button) – drückt auf der VD die Knöpfe
–[[
|-------------------------------------------------------------------------|
| 2: 16°C - 3: -° - 4: 20° - 5: +° - 6: 25° |
| 8: AN/Aus - 9: AN - 10: Aus |
| 11: Kühlen - 12: heizen - 13: entfeuchten - 14: Umluft - 15: Automatik |
| 17: -Ventilator - 18: +Ventilator - 19: Ventilator Automatik |

21: Lamellen senken - 22: Lamellen heben - 23: Lamellen Automatik

–]]
local Text
if Button == „2“ then Text = „16°C“
elseif Button == „3“ then Text = „Temperatur senken“
elseif Button == „4“ then Text = „20°C“
elseif Button == „5“ then Text = „Temperatur erhöhen“
elseif Button == „6“ then Text = „25°C“
elseif Button == „8“ then Text = „An/Aus“
elseif Button == „9“ then Text = „An“
elseif Button == „10“ then Text = „Aus“
elseif Button == „11“ then Text = „kühlen“
elseif Button == „12“ then Text = „heizen“
elseif Button == „13“ then Text = „entfeuchten“
elseif Button == „14“ then Text = „Umluft“
elseif Button == „15“ then Text = „Automatik“
elseif Button == „17“ then Text = „Ventilator verringern“
elseif Button == „18“ then Text = „Ventilator erhöhen“
elseif Button == „19“ then Text = „Ventilator Automatik“
elseif Button == „21“ then Text = „Lamellen senken“
elseif Button == „22“ then Text = „Lamellen erhöhen“
elseif Button == „23“ then Text = „Lamellen Automatik“
end – if Button ==
HC2:sleep(500) – Pause für sichere Übermittlung
HC2:call(ID, „pressButton“, Button) – VD schalten
print("Klimaanlage "…Text)
HC2:sleep(500) – Pause für sichere Übermittlung
end – pushKlima

function round(real)
– rundet auf das nächste Integer
return math.floor(real + 0.5)
end – round

function Raumklima (Name, ID, ZielT) – Raumnummer der Szene
local room = api.get(’/rooms’)
local DeltaT, RaumT
for b,d in pairs(room) do
if d.name == Name then
– bestimmt aus der Differenz zwischen Außentemperatur udn Raum Solltemperatur
– einen Temperaturaufschlag auf die Solltemperatur, der einem vielfachen
– des DelatTfaktor entspricht und addiert diesen zur Zieltemperatur.
– Wenn ZielT z.b. 22° und Außen 35° werden 13deltaTfaktor (hier 13,25) = 3.25° zur ZielT
– hinzugefügt, damit das Delta durch die klimaanlage nicht zu groß im Haus wird
– im Aschlauß wird das Kommando für die Klimaanlage zurückgegeben
DeltaT = (math.max(api.get(’/weather’)[‚Temperature‘]-ZielT,ZielT)-ZielT)*deltaTfaktor
ZielT = round(ZielT+DeltaT)
RaumT = tonumber(HC2:getValue(d.defaultSensors.temperature, „value“))
if math.abs(RaumT - ZielT) < 1.7 then
print(„Keine Klimaanlage nötig, Differenz „…math.abs(RaumT - ZielT))
else
pushKlima(ID, „2“) – 16° einschalten
if RaumT > ZielT then
Display(„cyan“, (Name…“ wird gekühlt auf „…ZielT…“ °C“), 999)
pushKlima(ID, „11“) – Cool
elseif ZielT < RaumT then
Display(„orange“, (Name…" wird geheizt auf „…ZielT…“ °C"), 999)
pushKlima(ID, „12“) – Heat
end – if RaumT > ZielT
for i=1, (ZielT - 16) do
pushKlima(ID, „5“) – Temperatur erhöhen
end --for
pushKlima(ID, „19“) – Ventilator Automatik
pushKlima(ID, „23“) – Lamellen Automatik
end – if Klimaanlage nicht / nötig
end – if d.Name = Name
end – for bd
end

for k, v in pairs( Klima ) do
	Raumklima(k, Klima[k].ID, Klima[k].Temp) 
	setTimeout(function()
		pushKlima(Klima[k].ID, "10") -- Aus
	end, 30*60*1000)
end -- Klimaanlage an