NetAtmo CO2 Skript

Hallo zusammen,

ich habe aktuelle das Skript NetAtmo Co2 Skript im Einsatz. Habe aber das Problem, wenn die Zipato Lampe ausgeschaltet ist schaltet es sich bei schlechten Werten automatisch ein. Das möchte ich aber nicht. Sondern nur wenn die Lampe auch eingeschaltet ist soll die Zipato Lampe die Farbe ändern. Im Aus Zustand der Lampe soll nichts passieren…

Crissxcross hatte dazu auch in den Kommentaren geklugscheißert :wink: Nur wo muss ich den Code von Crissxcross einfügen/anpassen?

Gruß h3nnin9

Hi,

das musst du in Zeile 26 anpassen. :slight_smile:

Gruß

Also ich habe das Skript angepasst in Zeile 26. Aber es läuft nicht… ([DEBUG] 13:52:47: line 28: unexpected symbol near char(226))

--[[
%% properties
168 value
%% globals
--]]

local co2ID = 168 
local rgbwID = 181 

local co2 = tonumber(fibaro:getValue(co2ID, "value"))
local startSource = fibaro:getSourceTrigger()

Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
 end

-- Funktion RGBW
function setRGBW (rgbw_option, deviceID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end

if (rgbw_option) then
if (tonumber(fibaro:getValue(deviceID, “value”)) ~= 0) then
fibaro:call(deviceID, “setColor”, RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
else
fibaro:debug(‘RGBW = true; RGBW ist aus’)
end
  
  
end
if (startSource['type'] == 'other') then
     Debug('white', "netatmo co2-Check 1.0 gestartet. Szene manuell gestartet")
  else
     Debug('green', "netatmo co2-Check 1.0 gestartet. Szene durch CO2-Wert gestartet")
end

if (co2 < 1000) then
  Debug( "green", "co2-Wert von " .. co2 .. " ppm ist ok.")
  setRGBW(rgbw_opt, rgbwID, '0,0,0,180')
elseif (co2 >= 1000 and co2 <= 1050) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt leicht über dem empfohlenen Wert von 1000 ppm.")
  setRGBW(rgbw, rgbwID, '255,232,0,0')
elseif (co2 >= 1050 and co2 <= 1100) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,209,0,0')
elseif (co2 >= 1100 and co2 <= 1150) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1100 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,186,0,0')
elseif (co2 >= 1150 and co2 <= 1200) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1150 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,163,0,0')
elseif (co2 >= 1200 and co2 <= 1250) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1200 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,140,0,0')
elseif (co2 >= 1250 and co2 <= 1300) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1250 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,117,0,0')
elseif (co2 >= 1300 and co2 <= 1350) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1300 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,94,0,0')
elseif (co2 >= 1350 and co2 <= 1400) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1350 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,71,0,0')
elseif (co2 >= 1400 and co2 <= 1450) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1400 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,48,0,0')
elseif (co2 >= 1450 and co2 <= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1450 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,25,0,0')
elseif (co2 >= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1500 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,0,0,0')
end

if (tonumber(fibaro:getValue(deviceID, “value”)) ~= 0) then

deviceID gibt es in dem Skript nicht. Ersetz das mal mit rgbwID. Dann sollte es gehen.

Das geht leider auch nicht :frowning:

Da gab es ein Fehler beim Kopieren:

Er hat aus den ’ dieses Zeichen gemacht: ‘

Musst du mal durchschauen und die Zeichen ersetzen.

Gruß

Ähm ich seh da leider kein Unterschied bei den Zeichen …

‘RGBW = true; RGBW ist aus’

zu

'RGBW = true; RGBW ist aus'

ändern. Wurde im Text leider ersetzt.

Hi, das war es leider auch nicht.

Was zeigt denn der Debug an?

Hallo zusammen!

Bei mir haut es hin:

--[[
%% properties
535 value
%% globals
--]]
 
local co2ID = 535 -- ID des netatmo co2-Sensor
local rgbwID = 611
 
local co2 = tonumber(fibaro:getValue(co2ID, "value"))
local startSource = fibaro:getSourceTrigger()
 
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
 end
 
-- Funktion RGBW
function setRGBW (rgbw_option, rgbwID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end
    if (tonumber(fibaro:getValue(rgbwID, "brightness")) ~= 0) then
      fibaro:call(deviceID, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
    else
      fibaro:debug('Funktion aufgerufen; RGBW ist aus')
    end
end
 
if (startSource['type'] == 'other') then
     Debug('white', "netatmo co2-Check 1.0 gestartet. Szene manuell gestartet")
  else
     Debug('green', "netatmo co2-Check 1.0 gestartet. Szene durch CO2-Wert gestartet")
end
 
if (co2 < 1000) then
  Debug( "green", "co2-Wert von " .. co2 .. " ppm ist ok.")
  setRGBW(rgbw_opt, rgbwID, '0,0,255,255')
elseif (co2 >= 1000 and co2 <= 1050) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt leicht über dem empfohlenen Wert von 1000 ppm.")
  setRGBW(rgbw, rgbwID, '255,232,0,0')
elseif (co2 >= 1050 and co2 <= 1100) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,209,0,0')
elseif (co2 >= 1100 and co2 <= 1150) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1100 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,186,0,0')
elseif (co2 >= 1150 and co2 <= 1200) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1150 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,163,0,0')
elseif (co2 >= 1200 and co2 <= 1250) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1200 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,140,0,0')
elseif (co2 >= 1250 and co2 <= 1300) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1250 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,117,0,0')
elseif (co2 >= 1300 and co2 <= 1350) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1300 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,94,0,0')
elseif (co2 >= 1350 and co2 <= 1400) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1350 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,71,0,0')
elseif (co2 >= 1400 and co2 <= 1450) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1400 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,48,0,0')
elseif (co2 >= 1450 and co2 <= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1450 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,25,0,0')
elseif (co2 >= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1500 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,0,0,0')
end

Hallo, also das Skript von Chriss1873 läuft bei mir auch. Allerdings musste ich in Zeile 27 DeviceID durch rgbwID ersetzen. Ich habe aber nach wie vor das Problem, wenn die Lampe ausgeschaltet ist und der Wert bsp. über 1000 ist schaltet sich die Lampe ein. Das möchte ich nicht, die Lampe soll nur die Farbe ändern wenn sie auch eingeschaltet ist.

Hallo Henning!

Die Szene ist nicht von mir, sondern hier aus dem Forum! :wink:

Ich hatte sie bei mir, nach dem Posten hier, nochmals angepasst. Probiere es jetzt mal…

--[[
%% properties
535 value
%% globals
--]]
 
local co2ID = 535 -- ID des netatmo co2-Sensor
local rgbwID = 611
 
local co2 = tonumber(fibaro:getValue(co2ID, "value"))
local startSource = fibaro:getSourceTrigger()
 
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
 end
 
-- Funktion RGBW
function setRGBW (rgbw_option, rgbwID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end
    if (tonumber(fibaro:getValue(rgbwID, "brightness")) ~= 0) then
      fibaro:call(rgbwID, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
    else
      fibaro:debug('Funktion aufgerufen; RGBW ist aus')
    end
end
 
if (startSource['type'] == 'other') then
     Debug('white', "netatmo co2-Check 1.0 gestartet. Szene manuell gestartet")
  else
     Debug('green', "netatmo co2-Check 1.0 gestartet. Szene durch CO2-Wert gestartet")
end
 
if (co2 < 1000) then
  Debug( "green", "co2-Wert von " .. co2 .. " ppm ist ok.")
  setRGBW(rgbw_opt, rgbwID, '0,0,255,255')
elseif (co2 >= 1000 and co2 <= 1050) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt leicht über dem empfohlenen Wert von 1000 ppm.")
  setRGBW(rgbw, rgbwID, '255,232,0,0')
elseif (co2 >= 1050 and co2 <= 1100) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,209,0,0')
elseif (co2 >= 1100 and co2 <= 1150) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1100 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,186,0,0')
elseif (co2 >= 1150 and co2 <= 1200) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1150 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,163,0,0')
elseif (co2 >= 1200 and co2 <= 1250) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1200 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,140,0,0')
elseif (co2 >= 1250 and co2 <= 1300) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1250 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,117,0,0')
elseif (co2 >= 1300 and co2 <= 1350) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1300 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,94,0,0')
elseif (co2 >= 1350 and co2 <= 1400) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1350 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,71,0,0')
elseif (co2 >= 1400 and co2 <= 1450) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1400 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,48,0,0')
elseif (co2 >= 1450 and co2 <= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1450 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,25,0,0')
elseif (co2 >= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1500 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,0,0,0')
end

Viele Grüße

Christian

Hallo Christian, das Skript läuft zwar aber schaltet mir auch die Lampe ein :frowning:

…komisch. Bei mir nicht…?!?

Das ist mein Debug:

[DEBUG] 13:54:10: netatmo co2-Check 1.0 gestartet. Szene manuell gestartet
[DEBUG] 13:54:10: co2-Wert von 592 ppm ist ok.
[DEBUG] 13:54:10: Funktion aufgerufen; RGBW ist aus

Und bleibt auch aus…

Das ist echt komisch… Bei mir wird gar nicht erkannt das die Lampe aus ist? Ich habe die Zipato RGBW Bulb im Einsatz. Und du?

[DEBUG] 14:13:29: netatmo co2-Check 1.0 gestartet. Szene durch CO2-Wert gestartet
[DEBUG] 14:13:29: co2-Wert von 1090 ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.
[DEBUG] 14:13:53: netatmo co2-Check 1.0 gestartet. Szene manuell gestartet
[DEBUG] 14:13:53: co2-Wert von 1090 ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.

EDIT: Also bei mir wird die Lampe immer als AN erkannt!?

Habs jetzt ans laufen bekommen… Habe in Zeile 26 brightness durch value ersetzt… Hier mein Skript

--[[
%% properties
168 value
%% globals
--]]
 
local co2ID = 168 -- ID des netatmo co2-Sensor
local rgbwID = 181
 
local co2 = tonumber(fibaro:getValue(co2ID, "value"))
local startSource = fibaro:getSourceTrigger()
 
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
 end
 
-- Funktion RGBW
function setRGBW (rgbw_option, rgbwID, colourString)
  local RGBWTable= {}
  local i = 1
 
  for value in string.gmatch(colourString,"(%d+)") do
    RGBWTable[i] = value
    i = i + 1
  end
    if (tonumber(fibaro:getValue(rgbwID, "value")) ~= 0) then
    fibaro:debug ("Lampe ist an")  
    fibaro:call(rgbwID, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
    else
    fibaro:debug  ("Lampe ist aus!")
    fibaro:debug('Funktion aufgerufen; RGBW ist aus')
    end
end
 
if (startSource['type'] == 'other') then
     Debug('white', "netatmo co2-Check 1.0 gestartet. Szene manuell gestartet")
  else
     Debug('green', "netatmo co2-Check 1.0 gestartet. Szene durch CO2-Wert gestartet")
end
 
if (co2 < 1000) then
  Debug( "green", "co2-Wert von " .. co2 .. " ppm ist ok.")
  setRGBW(rgbw_opt, rgbwID, '0,0,255,255')
elseif (co2 >= 1000 and co2 <= 1050) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt leicht über dem empfohlenen Wert von 1000 ppm.")
  setRGBW(rgbw, rgbwID, '255,232,0,0')
elseif (co2 >= 1050 and co2 <= 1100) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1050 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,209,0,0')
elseif (co2 >= 1100 and co2 <= 1150) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1100 ppm. Es sollte gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,186,0,0')
elseif (co2 >= 1150 and co2 <= 1200) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1150 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,163,0,0')
elseif (co2 >= 1200 and co2 <= 1250) then
  Debug( "orange", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1200 ppm. Es sollte dringend gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,140,0,0')
elseif (co2 >= 1250 and co2 <= 1300) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1250 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,117,0,0')
elseif (co2 >= 1300 and co2 <= 1350) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1300 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,94,0,0')
elseif (co2 >= 1350 and co2 <= 1400) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1350 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,71,0,0')
elseif (co2 >= 1400 and co2 <= 1450) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1400 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,48,0,0')
elseif (co2 >= 1450 and co2 <= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1450 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,25,0,0')
elseif (co2 >= 1500) then
  Debug( "red", "co2-Wert von " .. co2 .. " ppm liegt liegt über 1500 ppm. Es sollte DRINGEND gelüftet werden.")
  setRGBW(rgbw_opt, rgbwID, '255,0,0,0')
end