Wysyłanie danych z ...
 
Powiadomienia
Wyczyść wszystko

Wysyłanie danych z Domoticz do Thingspeak - Rozwiązanie

22 Wpisów
4 Użytkownicy
2 Likes
3,805 Wyświetleń
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

Dzień dobry.

Potrzebuję wysyłać w interwałach co 3 minuty dane z 6 czujników z Domoticza do thingspeak. Przy wykorzystaniu send to http udaję mi się wysyłać jeden. Czy ktoś jest mi w stanie pomóc znaleźć rozwiązanie? Niestety nie znam języków programowania by napisać samemu skrypt.

EDIT.

Znalazłem na francuskich stronach skrypt LUA.

Gdyby komuś miał się przydać: https://pon.fr/exporter-des-donnees-vers-le-site-thingspeak/

 
Dodane : 11/05/2019 8:39 am
goofas reacted
(@goofas)
Wpisów: 29
Praktykant
 

witam dzięki za skrypt @elpaul ale nie mogę poradzić sobie z jednym ... mam czujnik temp + wilgotność i za nic nie wiem jak to ustawić aby z jendego urządzenia wysyłał dane do field 1 i 2 wysyła mi tylko temperaturę a wilgotnosci już niestety nie lub np 2 czujniki mam do jednego urządzenia (2 temperatury)

 
Dodane : 05/07/2019 11:12 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

Nie chciało mi się tłumaczyć z francuskiego, ale wszystko na tyle logiczne, że w sumie nie trzeba.

Skrypt nie mój, ale z moimi modyfikacjami.

Popatrz na mój czujnik "Klimat w domu". Wysyłam (dla testu) temperaturę, wilgotność i ciśnienie z jednego BME280 na 3 osobne fieldy thingspeak. W "canal=" podajesz który parametr z czujnika ma wysyłać do danego fielda.

Wpisz swój write key 😀

 
Dodane : 05/07/2019 3:06 pm
goofas reacted
(@goofas)
Wpisów: 29
Praktykant
 

wielkie dzięki działa 

 
Dodane : 05/07/2019 4:40 pm
(@korzeniewski36)
Wpisów: 29
Praktykant
 

Witam, w jakiej formie wpisac swoją nazwę użytkownika i hasło domoticza przed adresem bo nie za bardzo wiem jak....

 
Dodane : 18/09/2019 5:28 pm
(@goofas)
Wpisów: 29
Praktykant
 

@korzeniewski36

ja mam bez loginu i hasła ale w ustawieniach domoticza mam zaznaczone, ze nie wymaga logowania z mojej sieci.

 
Dodane : 19/09/2019 7:06 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

@korzeniewski36

nie jest potrzebne dla tego skryptu używanie loginu i hasła. Nie rozumiem twojego pytania.

 
Dodane : 19/09/2019 7:21 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

A ja nie moge za cholere zmusic skryptu aby zapisywal mi dane pod wskazany przeze mnie field. Usilnie zapisuje pod jeden field

Posiadam czujnik od stacji pogody ktory odczytuje temp+humi .

Skrypt wysyla dane do thingspeak w postaci:

2019-11-03 13:40:17.851 Status: LUA: --- --- ---  http://XXXXXXXXXXX:XXXX/update?key=XXXXXXXXXXXXXXX&field3=16.3;68;3&field4=16.3;68;3 

2019-11-03 13:40:17.851 Status: EventSystem: Fetching URL http://XXXXXXXXXX:XXXX/update?key=XXXXXXXXXXXXXXX&field3=16.3;68;3&field4=16.3;68;3 after 0.2 seconds...

2019-11-03 13:40:17.851 Status: EventSystem: Script event triggered: Thingspeak

2019-11-03 13:40:39.128 Status: LUA: Export_ThingSpeak.lua

2019-11-03 13:40:39.128 Status: LUA: --- --- --- Export vers ThingSpeak : 13:40

2019-11-03 13:40:39.128 Status: LUA: Tunex = 16.3;68;3

2019-11-03 13:40:39.128 Status: LUA: --- --- --- Heure actuelle : 13:40

2019-11-03 13:40:39.128 Status: LUA: --- --- --- &field3=16.3;68;3

2019-11-03 13:40:39.128 Status: LUA: Tunex = 16.3;68;3

2019-11-03 13:40:39.128 Status: LUA: --- --- --- Heure actuelle : 13:40

2019-11-03 13:40:39.128 Status: LUA: --- --- --- &field3=16.3;68;3&field4=16.3;68;3

2019-11-03 13:40:39.128 Status: LUA: --- --- --- http://XXXXXXXXX:XXXX/update?key=XXXXXXXXXXXXXXXX&field3=16.3;68;3&field4=16.3;68;3
 
Dodane : 03/11/2019 2:59 pm
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

Czy ktos tu wogole zaglada??

 
Dodane : 09/11/2019 7:21 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

Która wersja skryptu? Pierwsza czy druga?

 
Dodane : 09/11/2019 8:04 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

A sam nie wiem.

--[[script_time_export_ThingSpeak.lua
auteur : papoo
version : 1.10
date : 18/05/2016
Principe :
exporter les données de compteurs, Températures, etc.. sur le site thingspeak.com
limite de "field" par "channel" = 8
Le script est lu toutes les minutes mais n'exporte les données que toutes les 4 minutes (temps modifiable ligne 40)
]]--

-- ============================================================================
-- Variables
local debugging = true -- true ou false

local url = '192.168.1.154:8084' -- user:pass@ip:port de domoticz
local url_thingspeak = 'http://192.168.1.154:3000/'
local API_key = 'YRWL7LACTDJSRBDA' -- API Write KEY ThingSpeak

local les_devices = {}; -- pas plus de 8 devices
-- 1er compteur : name ="nom du device 1", field=field ThingSpeak associé
les_devices[#les_devices+1] = {name="Tunex", field=3}
-- 2eme compteur : name ="nom du device 2", field=field ThingSpeak associé
-- les_devices[#les_devices+1] = {name="Tunex", field=4, nom="2", canal="2"}
-- 3eme compteur : name ="nom du device 3", field=field ThingSpeak associé
-- les_devices[3] = {name="Compteur Gaz", field=3}
-- les_devices[4] = {name="Compteur Prises", field=4}
-- les_devices[5] = {name="Compteur Lumières", field=5}
-- les_devices[6] = {name="Compteur Technique", field=6}
-- les_devices[7] = {name="DJU", field=7}

local fields =""
-- ============================================================================
commandArray = {}
function voir_les_logs (s)
if (debugging) then
print (s);
end
end

now=os.date("*t")
if now.min % 4 == 0 then -- export des données toutes les 4 minutes
print('Export_ThingSpeak.lua')
voir_les_logs("--- --- --- Export vers ThingSpeak : "..now.hour.. ":" ..now.min,debugging);
for i,d in ipairs(les_devices) do
v=otherdevices[d.name] -- v is the value attached to device d
voir_les_logs(d.name.." = "..(v or "nil"),debugging);
voir_les_logs("--- --- --- Heure actuelle : ".. now.hour .. ":" ..now.min,debugging);
if v==nil or v=="" or v=="Open" then -- multi valued ?
v=otherdevices_svalues[d.name] or ""
voir_les_logs("--- --- --- ".. d.name .." = ".. v .." & field".. d.field ,debugging);
end
fields = fields .. '&field'.. d.field .. '=' .. v
voir_les_logs("--- --- --- " .. fields ,debugging);

end
voir_les_logs("--- --- --- ".. url_thingspeak ..'update?key=' .. API_key .. fields ,debugging);
commandArray[1]={['OpenURL']=url_thingspeak ..'update?key=' .. API_key .. fields }

end -- if now
-- ============================================================================
return commandArray

 
Dodane : 09/11/2019 8:33 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

No to nie będzie działać, bo ten skrypt czyta tylko jedną wartość z czujnika.

Użyj skryptu z mojego drugiego postu. Tam określasz którą wartość jeżeli czujnik podaje więcej niż jedną ma wysyłać.

 
Dodane : 09/11/2019 8:46 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

Ten twoj tez probowalem

 

 
Dodane : 09/11/2019 8:53 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

Twoj wywala cos takiego. Mimo ze ustawiony jest field 3 to laduje do field 1.
2019-11-09 07:57:00.207 Status: LUA: =========== export ThingSpeak (v1.2) ===========

2019-11-09 07:57:00.207 Status: LUA: --- --- --- Export vers ThingSpeak : 7:57

2019-11-09 07:57:00.208 Status: LUA: --- --- --- Tunex = 8.6;88;3

2019-11-09 07:57:00.208 Status: LUA: --- --- --- canal = 1

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeurs multiples dans Tunex = 8.6;88;3

2019-11-09 07:57:00.208 Status: LUA: --- --- --- Nb de point virgule = 2

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeur 1 = 8.6

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeur 2 = 88

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeur 3 = 3

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeur 4 = nil

2019-11-09 07:57:00.208 Status: LUA: --- --- --- valeur 5 = nil

2019-11-09 07:57:00.208 Status: LUA: --- --- --- http://192.168.1.154:3000/update?key=YRWL7LACTDJSRBDA&field1=8.6

2019-11-09 07:57:00.208 Status: LUA: ========= Fin export ThingSpeak (v1.2) =========
Jak ustawic zeby ladowal temp do field 3 a humi do field4 albo chociaz samo temp do field 3
2019-11-09 07:57:00.208 Status: EventSystem: Fetching URL http://192.168.1.154:3000/update?key=YRWL7LACTDJSRBDA&field1=8.6 after 0.2 seconds...
local nom_script = "export ThingSpeak"
local version = "1.2"
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local url_thingspeak = 'http://192.168.1.154:3000/'
local API_key = 'YRWL7LACTDJSRBDA' -- creer une variable de type chaine contenant votre code API Write KEY ThingSpeak
-- si vous souhaitez remonter les valeurs d'un device qui en comporte plusieurs (ex: température et hygrometrie extérieure)
-- renseigner le nom de la valeur à remonter (à partir de la deuxieme valeur) ainsi que le numero d'ordre dans canal (voir exemple ci dessous field 7 )
local les_devices = {}; -- pas plus de 8 devices
-- 1er compteur : device ="nom du device 1", field=field ThingSpeak associé, nom=nom du device si canal >1, canal=si valeur multiple n° du canal à utiliser
les_devices[#les_devices+1] = {device="Tunex", field="3", nom="", canal="1"}
-- 2eme compteur : device ="nom du device 2", field=field ThingSpeak associé
-- les_devices[#les_devices+1] = {device="Tunex", field="3", nom="2", canal="2"}

 

 
Dodane : 09/11/2019 9:02 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

Patrz na czujniki o tej samej nazwie u mnie:

les_devices[#les_devices+1] = {device="Oregon BTH", field=1, nom="", canal="1"}
les_devices[#les_devices+1] = {device="Oregon BTH", field=2, nom="", canal="2"}
les_devices[#les_devices+1] = {device="Ciśnienie", field=3, nom="", canal=""}
les_devices[#les_devices+1] = {device="Oregon Wiatr", field=4, nom="", canal="3"}
les_devices[#les_devices+1] = {device="Oregon Wiatr", field=5, nom="", canal=""}
les_devices[#les_devices+1] = {device="Open UV - UV", field=6, nom="", canal=""}
les_devices[#les_devices+1] = {device="Oregon Deszcz", field=7, nom="", canal=""}
 
Dodane : 09/11/2019 9:15 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

No i.....?

A daj Oregon BTH pod field 4 i 5 i zobaczysz co bedzie. Czy nie bedzie go ladowac do field 1 i 2.

Mam ustawiony czujnik identycznie jak u ciebie
les_devices[#les_devices+1] = {device="Tunex", field="3", nom="", canal="1"}

Jest ustawiony na field 3 a laduje go pod field 1 . Dlaczego?

 
Dodane : 09/11/2019 9:22 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

Co robi parametr nom='' '' ?

 

 
Dodane : 09/11/2019 9:23 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

@kniazio

nom to własna nazwa fielda którą ma wysyłać jeżeli chcesz

Thingspeak zawsze będzie zaczynał od pierwszego fielda w tym przypadku.

 
Dodane : 09/11/2019 9:35 am
kniazio
(@kniazio)
Wpisów: 209
Pomocny Donator 2K21
 

No to jak mam ustawic zeby wysylal mi Tunex pod field 3 zamiast pod field 1 ?

Bo z tego co obserwuje to nie ma szans zeby skrypt wysylal mi dane pod field ktory ja chce a nie pod ktory on chce:)

 
Dodane : 09/11/2019 9:41 am
(@elpaul)
Wpisów: 17
Praktykant
Autor tematu
 

W takim przypadku musisz coś wysyłać pod field 1 i 2

Albo w ustawieniach thingspeaka dezaktywować field 1 i 2

 
Dodane : 09/11/2019 9:56 am
Strona 1 / 2
Udostępnij: