Aller au contenu

Envoyer Une Valeur Vers Thingspeak Depuis Une Scène


Messages recommandés

Posté(e)

bonjour,

 

J'essaye en vain d'envoyer une valeur à  ThingSpeak via une scène et j'y arrive pas...

(je peux le faire marcher très bien depuis un VD)

 

Mais pour une scène, je trouve pas la bonne syntaxe :

 

Voici ce que je fais :

local TS = net.HTTPClient()
TS:request("http://api.thingspeak.com/update", {
	options = {method = 'POST', headers = {['api_key'] = "xxxxxxxxx&field1=1"},},
	success = function(response)
    		    fibaro:debug("ok")
    		  end,
    error = function(reponse)
      		fibaro:debug("Error: " ..response)
      	    end
})

Quelqu’un à  une idée ?

 

Merciii !

 

Posté(e)

je suis loin d'être un pro des appels http, et encore mois dans les scènes.

Mais àla lecture de ta syntaxe elle est parfaitement similaire àce que je fait pour un GET.

La seule différence est que je n'ai pas de "headers". Est-ce làqu'il y aurait une erreur ?

Posté(e)

Salut

 

Peut tu essayer avec ca ?

thingspeak = Net.FHttp('api.thingspeak.com')

 local field_nb = 1
 local number = 1
 
    payload = 'key=VOTREAPKEY&field'.. field_nb .. '='..number"
    
        response, status, errorCode = thingspeak:POST('/update', payload)
         if tonumber(status) == 200 then
            break;
         end
Posté(e)

bonjour, merci pour vos réponse,

 

mais non cela ne marche pas :

[DEBUG] 16:59:40: line 1: attempt to index global 'Net' (a nil value)

 

mais c'est à  cause du net.HTTP (ou FHHTP).

Dans une scène c'est pas bon... jamais réussi à  le faire fonctionner...

  • 7 mois après...
Posté(e)

Bonjour,

 

Avez-vous tenté cela ? cela fonctionne dans énormément de scènes partagées sur le forum par les experts.

 

local client = net.HTTPClient()
client:request("http://..............")

 

  • Upvote 2
Posté(e)

salut

 

voila j'ai fini par trouver  :P

 

--[[
%% properties
107 power
%% events
%% globals
--]]

thingspeak = Net.FHttp('api.thingspeak.com')

local field1 = fibaro:getValue(107, "power")
 
    payload = "key=xxxxxxxxxxxxxxx&field2="..field1
    
response, status, errorCode = thingspeak:POST('/update', payload)

fibaro:debug(status)

 

  • Upvote 2
  • 2 semaines après...
Posté(e)

@971jmd Marche pas chez moi. Ton power c'est comme value ?

 

J'ai ca comme erreur :

 

[DEBUG] 23:05:56: line 8: attempt to index global 'Net' (a nil value)

 

--[[
%% properties
11 power
%% events
%% globals
--]]

thingspeak = Net.FHttp('api.thingspeak.com')

local field1 = fibaro:getValue(11, "power")
 
    payload = "key=APINUMBER&field1="..field1
    
response, status, errorCode = thingspeak:POST('/update', payload)

fibaro:debug(status)

 

 

 

 

Posté(e)

@jjacques68

 

Solution testé et validé. Merci @pepite pour le debut de code.

 

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]
local source = fibaro:getSourceTrigger()
local delay = 300 -- in seconds -- 5 mn

function Run()
      local Hour = os.date("%H:%M")
    fibaro:debug("Hour : " ..Hour)
  
 local Maintenant = os.date("*t") 
local heure = Maintenant['hour']
  fibaro:debug("Heure var num " .. heure);
  

local client = net.HTTPClient()
local TempExt = tonumber(fibaro:getValue(242, "value"));
local EauPiscine = tonumber(fibaro:getValue(241, "value"));
local EauSpa = tonumber(fibaro:getValue(239, "value"));

-- Temp Salon
local plop = tonumber(fibaro:getValue(247, "value"));
local plop2 = tonumber(fibaro:getValue(11, "value"));
local total = ((plop + plop2) / 2 )
  
-- Temp etage
local plop3 = tonumber(fibaro:getValue(62, "value"));
local plop4 = tonumber(fibaro:getValue(170, "value"));
local total1 = ((plop3 + plop4) / 2 )  

  -- Temp Bureau YO
local Yo = tonumber(fibaro:getValue(280, "value"));
  
  -- Temp SDB
local SDB = tonumber(fibaro:getValue(208, "value"));
  
  
local loop = 1
  
if loop == 1 or heure >= 0 then   
client:request("https://api.thingspeak.com/update?api_key=APINUMBER&field1=" .. TempExt.. "&field2=" .. EauPiscine.. "&field3=" .. EauSpa.. "&field4=" .. total.. "&field5=" .. total1.. "&field6=" .. Yo.. "&field7=" .. SDB )
fibaro:debug("Send Temperature")
end
    
setTimeout(Run, delay*1000)
end

-- Main Loop
if source["type"] == "autostart" or source["type"] == "other" then
    Run()
end

J'ai du code qui sert a rien comme loop ... ou heure >=0 Je ferais le menage du code plus tard :P

 

adaptez le en fonction de vos besoins.

 

Soon.

 

 

Posté(e)
@971jmd Marche pas chez moi. Ton power c'est comme value ?
 
J'ai ca comme erreur :
 
[DEBUG] 23:05:56: line 8: attempt to index global 'Net' (a nil value)
 
--[[%% properties11 power%% events%% globals--]]thingspeak = Net.FHttp('api.thingspeak.com')local field1 = fibaro:getValue(11, "power")   payload = "key=APINUMBER&field1="..field1response, status, errorCode = thingspeak:POST('/update', payload)fibaro:debug(status)

 
 
 
 


Non power et value c'est deux valeurs différentes

Power remonte la consommation
Et
Value remonte si on ou off ou ouverte ou fermée .....



Envoyé de mon iPhone en utilisant Tapatalk
Posté(e)

Ok merci @971jmd

 

Par contre avec ton code j'ai toujours cette erreur :

 

[DEBUG] 09:55:07: line 8: attempt to index global 'Net' (a nil value)

 

Ca fonctionne chez toi ?

Posté(e)

@yoil, normal pour l erreur si tu mets dans une scene.
Net.fhttp ne fonctionne que dans un VD
Net.httpclient dans une scene et supporte le https

Envoyé de mon Nexus 5X en utilisant Tapatalk

Posté(e) (modifié)

salut

 

fait attention au &field1 :  key=xxxxxxxxxxxxxxx&field1="..conso

 

 

--[[
%% properties
107 power
%% events
%% globals
--]]

thingspeak = Net.FHttp('api.thingspeak.com')

local conso = fibaro:getValue(107, "power")
 
    payload = "key=xxxxxxxxxxxxxxx&field1="..conso
    
response, status, errorCode = thingspeak:POST('/update', payload)

fibaro:debug(status)

 

Modifié par 971jmd
Posté(e)

désolé:13: mai j'ai pas coller le bon code

 

--[[
%% properties
547 power
%% events
%% globals
--]]

local field1 = fibaro:getValue(547, "power")
 
-- http requete
   local http = net.HTTPClient()
http:request("https://api.thingspeak.com/update?api_key=WZ97TDW1FEYN617N&field2="..field1, {options = {
method = 'GET'
},
success = function(response) fibaro:debug("OK") end,
error = function(err) fibaro:debug("Error: " ..err) end
})

 

 

  • Upvote 1
×
×
  • Créer...