http:request mit Variable

Hallo zusammen,

ich habe lange gesucht und getestet, aber leider nichts gefunden was funktioniert.
Ich möchte Werte aus einigen meiner Fibaro Sensoren auf mein KNX übertragen.

Mit dem Homeserver von Gira funktioniert das sehr gut, hiermit konnte ich erfolgreich z.b. einen Öffnungsmelder/Bewegungsmelder integrieren.

Leider habe ich es noch nicht geschafft Werte zu übertragen z.b. eine Temperatur oder Helligkeitswert

was mache ich falsch?

–[[
%% properties
141 value
%% globals
–]]
local co2ID = 30 – ID des netatmo co2-Sensor
local co2 = Wert(fibaro:getValue(co2ID, “value”))
local startSource = fibaro:getSourceTrigger()
if (co2 > 1) then
local http = net.HTTPClient()
http:request('http://IPGiraHS:34100/CO2Wohnzimmer520.0, { --Anstatt dem 520.0 müsste die Variable co2 rein–
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)

    else
      fibaro:debug(resp.status)
   
    end
  end
})

end

Vielen Dank für eure Unterstützung

Hi,
Getriggert wird die Szene hier durch den Sensor 141, der wird im Code aber nicht verwendet.

Was soll hier passieren? Wenn CO2 erkannt wird, soll der Gira abgefragt werden?

Funktiniert der Request selbst?

VG Hoggle

Hallo,

ja komischerweise läuft es :slight_smile: es postet quasi den Wert 520 jedoch nicht die Variable co2.
Ich möchte das er die Daten an den Gira sendet sobald sich der CO2 wert ändert.

Gruß FP

Funktioniert aber auch nur beim manuellen ausführen, nicht, wenn die Szene getriggert werden soll. Dafür müsstest du oben die ID von dem Sensor einfügen.

local co2 = Wert(fibaro:getValue(co2ID, “value”))

Das kann so nicht funktionieren, der Wert muss weg. Dann steht der CO2-Wert in der Variablen co2.

Gruß

okay und wie bekomme ich dann die Variable in den http request zum übermitteln?

http:request('http://IPGiraHS:34100/' ..co2.. '', { –Anstatt dem 520.0 müsste die Variable co2 rein–
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)

else
fibaro:debug(resp.status)

end
end
})

danke das werde ich mal heute Abend testen

Hallo geht leider immer noch nicht

--[[
%% properties
%% events
%% globals
30 value
--]]

local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
http:request('‘http://IPGiraHS:34100/CO2Wohnzimmer/' ..co2.. '', { –Anstatt dem 520.0 müsste die Variable co2 rein–
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)
 
else
fibaro:debug(resp.status)
 
end
})

er sagt mir [DEBUG] 19:09:28: line 11: unexpected symbol near char(226) die http Linie ist etwas länger als die oben. Kann er vielleicht damit nicht zurecht kommen? Ich kann sie leider nicht posten da sie Seriennummer usw. enthält

Okay neue Erkenntnis

--[[
%% properties
%% events
%% globals
30 value
--]]

local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
http:request('http://IPGiraHS:34100/CO2Wohnzimmer' ..co2.. '', {
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)
 
else
fibaro:debug(resp.status)
 
end
})

[DEBUG] 19:27:37: line 20: unexpected symbol near ‘}’

Ersetz mal das

http:request('http://IPGiraHS:34100/CO2Wohnzimmer' …co2… '',

durch das

http:request('http://IPGiraHS:34100/CO2Wohnzimmer' …co2,

Hallo leider nein

--[[
%% properties
%% events
%% globals
30 value
--]]

local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
http:request('http://IPGiraHS:50300/LuxWZ520' ..co2, {
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)
 
else
fibaro:debug(resp.status)
 
end
})

[DEBUG] 06:12:06: line 20: unexpected symbol near ‘}’

Noch eine andere Idee?

Versuche mal die die URL vorher in einer Variabla zusammen zu bauen.

local url = 'http://url' …co2

Und diese dann für den Request zu verwenden.

http:request(url {
...

Hallo leider auch nichts, gibts noch andere Ideen?

--[[
%% properties
%% events
%% globals
30 value
--]]

local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
local url = 'http://IPGiraHS:50300/LuxWZ' ..co2
  http:request('url' , {
       success = function(resp)
         if resp.status == 200 then
           fibaro:debug(resp.status)
          
         else
           fibaro:debug(resp.status)
       
         end
       end
  })

[DEBUG] 18:52:28: [1;31m2016-02-25 18:52:28.789623 [ fatal] Runtime error: std::runtime_error: ‘Invalid argument’

Warum schreibst du ‘url’? Die Anführungszeichen müssen weg.

Gruß

Hallo hast recht habe ich übersehen.
nun kommt aber folgendes

attempt to call local ‘url’ (a string value)

--[[
%% properties
%% events
%% globals
30 value
--]]

local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
local url = 'IPGiraHS:50300/LuxWZ' ..co2
  http:request (url {
       success = function(resp)
         if resp.status == 200 then
           fibaro:debug(resp.status)
          
         else
           fibaro:debug(resp.status)
       
         end
       end
  })

Jemand noch ne Idee was ich falsch mache?

Gruß FP

Warum hast du denn das HTTP entfernt? Bringt das einen Unterschied? Hatte gestern keine Fehlermeldung bekommen

so geht es nun endlich

--[[
%% properties
%% events
%% globals
30 value
--]]
 
local co2 = (fibaro:getValue(30, 'value'))
local trigger = fibaro:getSourceTrigger()
local http = net.HTTPClient()
local url = 'http://GiraIP:50300/LuxWZ' ..co2
  http:request(url, {
       success = function(resp)
         if resp.status == 200 then
           fibaro:debug(resp.status)
          
         else
           fibaro:debug(resp.status)
       
         end
       end
  })

Juhuuu vielen Dank nochmal :slight_smile:

Ich nochmal,
leider funktioniert der Trigger nicht, wenn die Wert Sich ändern gibt er sie nicht weiter. Ich muss es immer Manuell anstossen.
Was ist noch falsch?

Gruß FP

Trag den mal direkt unter Properties ein.

Gruß

--[[
%% properes
30 value
%% events
%% globals
--]]

so?