Logging von zB Temperatur

Hallo zusammen,

Frage, ist das wirklich eine Interpolation?
Ist es nicht nur ein Durchschnittswert aus den vorhandenen Messpunkten innerhalb eines Intervalls bei den jeweiligen Charts?
Bei 1 Tag wird über jeweils 10min gemittelt und bei 1h über jeweils 1min?

Grüße
Volker

Hallo zusammen,

habe heute Nachmittag auf die 4.520 upgedated. Seitdem werden keine Daten mehr bei allthingstalk gespeichert. In der Szene gibt es reihenweise Fehler:

[DEBUG] 20:34:35: 2018-11-24 20:34:35.810420 [ error] Handshake error: certificate verify failed
[DEBUG] 20:34:35: JJSghs3icuHafZaY7YaCnbNf: ERROR
[DEBUG] 20:34:35: certificate verify failed
[DEBUG] 20:34:35: 2018-11-24 20:34:35.847199 [ error] Handshake error: certificate verify failed
[DEBUG] 20:34:35: CLuedjvzcze6MlzZboIJ0vgC: ERROR
[DEBUG] 20:34:35: certificate verify failed
[DEBUG] 20:34:35: 2018-11-24 20:34:35.879752 [ error] Handshake error: certificate verify failed
[DEBUG] 20:34:35: pCu9CTnrzAB2HoCgnFLhPQU7: ERROR
[DEBUG] 20:34:35: certificate verify failed

Habt Ihr ähnliche Probleme?

@Volker1, sorry hier noch die Antwort: Mit Interpoliert mein ich die Verbindung der Punkte. Die ist ja nicht eine Gerade sondern “geschwungen” wenn man ordentlich reinzoomt. Du hast auch Recht mit den Durchschnittswert. Offenbar werden bei entsprechendem großen Darstellungszeitraum Punkte irgendwie gemittelt, was bei An=1 und Aus=0 natürlich zu Verwirrung führt. Das Problem mit 1 Stunde Versatz hab/hatte ich immer noch.

@Ändy,

Yep, kann ich so auch bestätigen :-(. Habe gestern update auf 4.520 durchgeführt und seitdem habe ich den gleichen Fehler. Ärgerlich, da ich gerade erst letzte Woche diesen Thread entdeckt hatte und mir für etliche Devices Assets und Szenen eingerichtet hatte.

Grüße
Lodi

Ok, dann liegt’s tatsächlich irgendwie am Update. Hab mal versucht Informationen über den Fehler zu finden. Leider ohne Erfolg.

Ich bin aber auf das Problem mit dem Zeitversatz gestoßen. Hier muss die korrekte Zeitzone übergeben werden, Zeile 35 statt dem “Z” ein “A”:

local currentDateISO = os.date("%Y-%m-%dT%XA")

oder man kann die Zeitangabe auch weglassen, dann wird der Übermittlungszeitpunkt verwendet:

local currentDateISO = ""

Alles unbestätigt! Ich kann es wegen dem anderen Problem leider nicht ausprobieren. Wer hier etwas Neues weiß bitte melden.

@lodi, alle,

Ich hab noch ein wenig gegoogled und einen Tipp gefunden wegen dem Certificate Error. Fügt die Zeile mit “checkCertificate = false,” ein und es wird kein Fehler mehr angezeigt:

    options={
      headers = httpHeaders,
      data = requestBody,
      method = 'PUT',
      timeout = 5000,
      checkCertificate = false,
    },

Meinen Tipp von vorhin mit der Zeitzone mal kritisch betrachten. Habe es auf Anhieb nicht hinbekommen das es passt. Bei Zeitzone ‘A’ wird ein Fehler gemeldet. Wird die Zeit bei ‘at’ leer gelassen kommt zwar kein Fehler aber die Daten werden auch nicht auf der allthingstalk Seite angezeigt. Muss ich mir nochmal anschauen. Zumindest sollte es wieder wie vorher funktionieren.

Nachtrag: Mit local currentDateISO = “” funktionert es doch! Ich war nur zu ungeduldig, da das Diagramm nicht sofort aktualisiert wird. Nun passt alles. Sorry für die vielen Posts :wink:

@Ändy,

Perfekt, Danke für die Recherche. You made my day :slight_smile:

Grüße
Lodi

@Ändy: Super, läuft wieder, besten Dank! :slight_smile:

Grüße
Volker

moin zusammen!

Seit dem Update auf 4.520 funktioniert eine meiner Loggong-Szenen nicht mehr, und ich finde den Grund dazu nicht. Vielleicht könnt ihr mal draufschauen?! Danke! Bis zum Update hat die Szene die Daten immer ordentlich gesendet; Update gemacht, nichts verändert, keine Reaktion der Szene

--[[
%% properties
153, 159, 155, 187, 163, 198,161,149,22,18,26,33,101,165,98,53,116 batteryLevel
%% events
%% globals
fifteenMinuteTimer
--]]

--
--oneMinuteTimer: https://forum.fibaro.com/topic/21656-recording-data-to-allthingstalkio/
--Hilfe durch https://forum.fibaro.com/topic/21656-recording-data-to-allthingstalkio/?page=3&tab=comments#comment-161550
--Szenenstart bei Wertminderung: https://www.siio.de/fibaro-homecenter-einsteigerguide-teil-2-getriggerte-szenen/
--Triggern in LUA-Szenen

-- Scene         : All Things Talk Test
-- Version       : 1.3
-- Date Created  : 09 June 2016
-- Last Changed  : 12 November 2018
-- HC Version    : Home Center 2 v4.510
-- Created By    : Dave Harrison

-- Purpose       : To test sending data to AllThingsTalk.io
-- Trigger       : Triggered by the Timer Scene updating the fifteenMinuteTimer global variable

-- Revision History
-- ----------------

-- 1.2 19-Nov-16	SmartLiving.io rebranded as AllThingsTalk.io
-- 1.3 12-Nov-18	New authentication method

--====================================================
-------------------- Declaration: Local Variables
--====================================================
local debug = true

local sourceTrigger = fibaro:getSourceTrigger()
local currentDateISO = os.date("%Y-%m-%dT%X")
local currentDateTime = os.time() 

local devices = 
      {
        WohnzimmerThermostat1 = {deviceId = 153, property = "batteryLevel",assetId = "fnkA6vcYspPebahslxgcEvE0"},
  		WohnzimmerThermostat2 = {deviceId = 159, property = "batteryLevel", assetId = "hd39timELr37556V6S2cgFqo"},
        EsszimmerThermostat = {deviceId = 155, property = "batteryLevel", assetId = "64z8BcdUfulY5tri3iwDh9Cv"},
        KuecheThermostat = {deviceId = 187, property = "batteryLevel", assetId = "8GgVDq47MI2xgxIn5VK7QMwD"},
  		BadezimmerThermostat = {deviceId = 163, property = "batteryLevel", assetId = "en96zOIbzXhKKBLjOGdzOFjV"},
  		WindfangThermostat = {deviceId = 198, property = "batteryLevel", assetId = "TjfAC8NhY9bbO5AnNSyWT0Ea"},
  		BueroThermostat = {deviceId = 161, property = "batteryLevel", assetId = "7sbr9Ug5CYByaYif9b9V7vnG"},
  		AnkleideThermostat = {deviceId = 149, property = "batteryLevel", assetId = "VeTJteLgnsJArZY5pqWCLYVS"},
  		EsszimmerSmokesensor = {deviceId = 22, property = "batteryLevel", assetId = "YtOskdqE34OhqO6Y2ci6m5tP"};
  		WohnzimmerSmokesensor = {deviceId = 18, property = "batteryLevel", assetId = "7YCG7hwIqwiXqEhq7cu24qkf"},
  		EsszimmerMotionsensor = {deviceId = 26, property = "batteryLevel", assetId = "gvrqsliqeR7v1wpCWXOHBphS"},
  		TreppeMotionsensor = {deviceId = 33, property = "batteryLevel", assetId = "qYwvQ6V095itiP5mmxp06Dhj"},
  		KinderzimmerLiThermostatFenster = {deviceId = 101, property = "batteryLevel", assetId = "Yuds2Y1ASpoG4NUezq8fyzhh"},
        KinderzimmerLiThermostatGiebel = {deviceId = 165, property = "batteryLevel", assetId = "LCODYFcGqSQb1BoVIQhVU1y3"},
  		KinderzimmerReThermostatFenster = {deviceId = 98, property = "batteryLevel", assetId = "lWbFg7Ky0Qkh3qO9QJSqWVFB"},
  		KinderzimmerReThermostatGiebel = {deviceId = 53, property = "batteryLevel", assetId = "GtCqaclWdVA4rO6BdxrEnKPs"},
        SchlafzimmerThermostat = {deviceId = 116, property = "batteryLevel", assetId = "s5Lr9W77DPczLZhGSepjAJgm"}
	}
--====================================================
-------------------- Functions
--====================================================
local function log(str) if debug then fibaro:debug(str); end; end
local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end

local function sendData (assetId, requestBody)
  local deviceToken = "maker:*******"      -- Replace maker:xxxxxxxxx with your Device Authentication Token
  local url = "https://api.allthingstalk.io/asset/" .. assetId .. "/state"
  local httpClient = net.HTTPClient({timeout=5000})
  
  local httpHeaders = 
      {
        ["Authorization"] = "Bearer " .. deviceToken,
        ["Content-Type"] = "application/json",
      }
  
  httpClient:request(url, {
    options={
      headers = httpHeaders,
      data = requestBody,
      method = 'PUT',
      timeout = 5000,
      checkCertificate = false,
    },
    success = function(response)
      if (response.status >= 200 and response.status < 300) then
        log(assetId .. ": " .. response.status .. " - successful")
      else
        errorlog(assetId .. ": " .. "ERROR")
      end
    end,
    error = function(error)
      errorlog(assetId .. ": " .. "ERROR")
      log(error)
    end
  })
end

--====================================================
-------------------- Main
--====================================================

-- Send data to AllThingsTalk
-- --------------------------

local requestData = {}

-- Check each device and format the request data
for i, device in pairs(devices) do

  -- requestData = {value = tonumber(fibaro:getValue(device.deviceId, "value")), at = currentDateISO}
  requestData = {value = tonumber(fibaro:getValue(device.deviceId, device.property)), at = currentDateISO}
  
  
  local requestBody = json.encode(requestData)
  log(i .. ": " .. requestBody)
  
  -- Send the data
  sendData(device.assetId, requestBody)
end

Stimmt denn der Triggerblock? Das kommt mir komisch vor mit den ganzen Zahlen Komma getrennt.
Es gibt einen Fehler bei dem der Triggerblock nicht sofort funktioniert sondern erst nach Neustart oder so. Könnte ein ähnlicher Effekt sein.

Hi Andy,

was meinst Du genau, ob mein Triggerblock stimmt?
meinst Du das hier

%% properties
153, 159, 155, 187, 163, 198,161,149,22,18,26,33,101,165,98,53,116 batteryLevel
%% events
%% globals
fifteenMinuteTimer

Dazu kann ich nur sagen, dass das bis zum Update funktioniert hat. Wobei, ich habe gerade mal nachgesehen, die Szene hat minütlich übertragen… hmm, was nun?
Alle 15 Minuten ist vollkommen ausreichend, wenn ich sogar immer nur dann, wenn sich der BatteryLevel eines Gerätes ändert…

Hi Rik,

ich mein die Zeile
153, 159, 155, 187, 163, 198,161,149,22,18,26,33,101,165,98,53,116 batteryLevel

Ich habe noch nie Trigger mit Komma getrennt gesehen. Das muss nichts heißen aber ich glaube das geht so nicht. Ich glaube Du musst Wohl oder Übel alles untereinander schreiben.

Wenn Du meinst, dass es vor dem Update funktioniert hat dann behaupte ich, dass dieser Fehler mit dem Triggerblock schuld daran ist. Vermutlich hat es vorher irgendwie funktioniert und dann hast Du noch was am Triggerblock hinzugefügt und gespeichert, was das HC aber nicht registriert hat. Bei einem Neustart (nach dem Update) wird das aber anscheinend übernommen. Nur eine Theorie von mir…

Ich würde die obige Zeile mal löschen (richtig löschen ohne auskommentieren) und die Szene explizit neu starten (stop/start). Wenn sich dann immer noch nichts tut, HC neustarten.

Es kann auch nichts schaden, diese Zeilen einzufügen (nach dem Triggerblock) um zu sehen was triggert:

local startSource = fibaro:getSourceTrigger()
fibaro:debug(os.date() .. " | Trigger: ".. startSource["type"] .. " | Name: " .. tostring(startSource['name']))

Moin Andy,

ich habe den Triggerblock nun mal umgeschrieben, offensichtlich triggert die Szene nun wie sie soll, nämlich bei jeder Wertänderung des BatteryLevels. Mit den Kommas getrennt hatte ich irgendwo im Netz gelesen…
Werde nun auch mal die Codezeilen hinzufügen, mal sehen was die auswerfen - Danke!

Bezüglich des Uhrzeitstempels hier nochmal meine Recherche und derzeitige Lösung. Es liegt offensichtlich an den verschiedenen Zeitzonen.

Bißchen was nachzulesen:
allthinkstalk Docs
Wikipedia ISO 8601

Meine Lösung:
local currentDateISO = os.date("%Y-%m-%dT%X+01:00")

Vielleicht hilft Euch das
Offen für Anregungen :slight_smile:

Gruß
Rik

@Ändy
hab nun mal Deinen Code ergänzt, bekomme aber ne Fehlermeldung:


-- Code zum Kontrollieren wer oder was triggert
local startSource = fibaro:getSourceTrigger()
fibaro:debug(os.date() .. " | Trigger: ".. startSource["type"] .. " | Name: " .. tostring(startSource['name']))
-- Code Ende

local debug = true

local sourceTrigger = fibaro:getSourceTrigger()
-- local currentDateISO = os.date("%Y-%m-%dT%X")
local currentDateISO = os.date("%Y-%m-%dT%X+01:00")
local currentDateTime = os.time() 

Fehlermeldung:
[DEBUG] 11:43:47: Thu Dec 13 11:43:47 2018 | Trigger: other | Name: nil

Ideen?

Hi Rik,

das passt schon. Ist kein Fehler und wird so ausgegeben wenn von Hand getriggert. Spannend wird es wenn eine Gobale triggert dann wird statt nil der Name angezeigt. Z.B. dein 15mintimer. Triggert ein device steht da zwar auch nil aber vorher steht property. Kann man sicherlich besser machen soll aber nur ein einfaches Mittel sein die Trigger zu prüfen.
Danke für die Links. Schau ich mir an.

und mal wieder eine Frage:
da das Wetter-PlugIn bzw die PlugIns auf dem HomeCenter zumindest bei mir nicht mehr arbeiten, habe ich mir dieses VirtuelleDevice installiert: Weather State VD

Würde nun gerne aus dem VD die derzeitig gemessene Temperatur loggen, bekomme dies aber nicht hin. Seht ihr hier ne Möglichkeit?

Danke!

Sorry, habe mich vertan… meinte etwas anderes

Trend.png

Hallo zusammen,

hat einer von euch ab ca. Dienstag/ Mittwoch auch das Problem, dass keine Charts mehr angezeigt werden unter AllThingsTalkMaker?
Die Werte werden übertragen, Fibaro arbeitet richtig.

Vielen Dank und Grüße
Volker

Hallo Volker,

Hier exakt das gleiche Problem. Ich vermute das liegt bei Allthingstalk. Näheres würde mich auch interessieren.