hab das Script Wetterbedingung am Wickel und möchte Aktionen wie z.b. HOME- oder AUTO Button bei bestimmten Bedingungen automatisch drücken. siehe Code…
--[[
%% properties
3 ConditionCode
%% globals
--]]
local weather_code = fibaro:getValue(3, 'ConditionCode')
local previous_weather_code = fibaro:getValue(3, 'PreviousConditionCode')
if (weather_code == previous_weather_code) then
--fibaro:debug('weather_code hat sich nicht geändert.')
else
fibaro:debug('Wettervorhersage v0.01 gestartet.')
fibaro:debug('ConditionCode: ' ..weather_code.. ' / Prüfe Wetterbedingung')
if (weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40') then
fibaro:debug('Wettervorhersage: Regen')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34') then
fibaro:debug('Wettervorhersage: klar')
fibaro:call(94, "pressButton", "2");
fibaro:debug('AutomowerModus AUTO aktiviert')
elseif (weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44') then
fibaro:debug('Wettervorhersage: leicht bewölkt')
fibaro:call(94, "pressButton", "2");
fibaro:debug('AutomowerModus AUTO aktiviert')
elseif (weather_code == '26' or weather_code == '35') then
fibaro:debug('Wettervorhersage: bewölkt')
fibaro:call(94, "pressButton", "2");
fibaro:debug('AutomowerModus AUTO aktiviert')
elseif (weather_code == '27' or weather_code == '28') then
fibaro:debug('Wettervorhersage: stark bewölkt')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22') then
fibaro:debug('Wettervorhersage: Nebel')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46') then
fibaro:debug('ACHTUNG: Gewitter')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46') then
fibaro:debug('Wettervorhersage: Möglicherweise Schnee/Schneeregen')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43') then
fibaro:debug('Wettervorhersage: Schnee')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '17' or weather_code == '35') then
fibaro:debug('ACHTUNG: Hagel')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '8' or weather_code == '10') then
fibaro:debug('Wettervorhersage: Überfrierende Nässe')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23') then
fibaro:debug('Wettervorhersage: Stürmisch')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
elseif (weather_code == '25') then
fibaro:debug('Wettervorhersage: Kalt (Was immer das heißt...)')
fibaro:call(94, "pressButton", "2");
fibaro:debug('AutomowerModus AUTO aktiviert')
elseif (weather_code == '36') then
fibaro:debug('Wettervorhersage: Heiß (Was immer das heißt...)')
fibaro:call(94, "pressButton", "2");
fibaro:debug('AutomowerModus AUTO aktiviert')
else
fibaro:debug('Code 3200. Nicht bekannt.')
fibaro:call(94, "pressButton", "4");
fibaro:debug('AutomowerModus HOME aktiviert')
end
end
Da aber das Script alle 10 Minuten aktualisiert, wird demzufolge auch der jeweilige Button dementsprechend alle 10 Minuten gedrückt.
Ich möchte aber , das der Button nur gedrückt wird wenn die Wetterbedingung sich sozusagen von schlechtem Wetter auf gutem Wetter oder andersrum ändert . Ist das verständlich geschrieben ?
Wie kann ich das anstellen ?
du kannst bei dem ersten Drücken des Knopfes eine Variable füllen, welche dann zum Beispiel auf 1 steht. Wenn diese Variable auf 1 steht, dann wird der Knopf nicht erneut gedrückt. Diese Variable kannst du dann zu einer bestimmten Zeit wieder auf 0 setzen, wodurch dann der Knopf wieder gedrückt wird.
es sind aber ja 2 knöpfe…also bei gutem Wetter soll auto gedrückt werden und bei wechsel zu schlechtem Wetter home und das ja nur wenn sich das Wetter dementsprechend ändert…
geht das dann trotzdem so ?
mag mal jemand über den Code schauen? Im Debug kommt folgende Meldung und ich komm da nicht weiter…
[DEBUG] 19:09:14: line 12: ‘)’ expected (to close ‘(’ at line 9) near ‘if’
--[[
%% properties
3 ConditionCode
%% globals
--]]
local weather_code = fibaro:getValue(3, 'ConditionCode')
local previous_weather_code = fibaro:getValue(3, 'PreviousConditionCode')
local AM_Status = (fibaro:getGlobal('AM_Status')
if (weather_code == previous_weather_code) then
--fibaro:debug('weather_code hat sich nicht geändert.')
else
fibaro:debug('Wettervorhersage v0.01 gestartet.')
fibaro:debug('ConditionCode: ' ..weather_code.. ' / Prüfe Wetterbedingung')
if (weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40') then
fibaro:debug('Wettervorhersage: Regen')
elseif (weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34') then
fibaro:debug('Wettervorhersage: klar')
elseif (weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44') then
fibaro:debug('Wettervorhersage: leicht bewölkt')
elseif (weather_code == '26' or weather_code == '35') then
fibaro:debug('Wettervorhersage: bewölkt')
elseif (weather_code == '27' or weather_code == '28') then
fibaro:debug('Wettervorhersage: stark bewölkt')
elseif (weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22') then
fibaro:debug('Wettervorhersage: Nebel')
elseif (weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46') then
fibaro:debug('ACHTUNG: Gewitter')
elseif (weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46') then
fibaro:debug('Wettervorhersage: Möglicherweise Schnee/Schneeregen')
elseif (weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43') then
fibaro:debug('Wettervorhersage: Schnee')
elseif (weather_code == '17' or weather_code == '35') then
fibaro:debug('ACHTUNG: Hagel')
elseif (weather_code == '8' or weather_code == '10') then
fibaro:debug('Wettervorhersage: Überfrierende Nässe')
elseif (weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23') then
fibaro:debug('Wettervorhersage: Stürmisch')
elseif (weather_code == '25') then
fibaro:debug('Wettervorhersage: Kalt (Was immer das heißt...)')
elseif (weather_code == '36') then
fibaro:debug('Wettervorhersage: Heiß (Was immer das heißt...)')
else
fibaro:debug('Code 3200. Nicht bekannt.')
end
if
(weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40' or
weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22' or
weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46' or
weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46' or
weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43' or
weather_code == '17' or weather_code == '35' or
weather_code == '8' or weather_code == '10' or
weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23')
and
AM_Status == 2
then
fibaro:call(94, "pressButton", "4")
fibaro:debug('Automower Modus: HOME gesetzt')
elseif
(weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34' or
weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44' or
weather_code == '26' or weather_code == '35' or
weather_code == '36')
and
AM_Status == 0 or AM_Status == 1
then
fibaro:call(94, "pressButton", "2")
fibaro:debug('Automower Modus: AUTO gesetzt')
end
end
danke Hoggle…das hatte ich übersehen. Kannst du mir noch sagen warum von der ID 94 nicht die entsprechenden Button gedrückt werden wenn das Wetter
dementsprechend ist ? Eigentlich sollte das im Debug ja auch mit ausgegeben werden, aber es läuft quasi nur die Wetterbedingung durch…
so, hab nochmal ein local vd_id = 94 eingetragen und das else was du meintest
--[[
%% properties
3 ConditionCode
%% globals
--]]
local weather_code = fibaro:getValue(3, 'ConditionCode')
local previous_weather_code = fibaro:getValue(3, 'PreviousConditionCode')
local AM_Status = fibaro:getGlobal('AM_Status')
local vd_id = 94
if (weather_code == previous_weather_code) then
--fibaro:debug('weather_code hat sich nicht geändert.')
else
fibaro:debug('Wettervorhersage v0.01 gestartet.')
fibaro:debug('ConditionCode: ' ..weather_code.. ' / Prüfe Wetterbedingung')
if (weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40') then
fibaro:debug('Wettervorhersage: Regen')
elseif (weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34') then
fibaro:debug('Wettervorhersage: klar')
elseif (weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44') then
fibaro:debug('Wettervorhersage: leicht bewölkt')
elseif (weather_code == '26' or weather_code == '35') then
fibaro:debug('Wettervorhersage: bewölkt')
elseif (weather_code == '27' or weather_code == '28') then
fibaro:debug('Wettervorhersage: stark bewölkt')
elseif (weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22') then
fibaro:debug('Wettervorhersage: Nebel')
elseif (weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46') then
fibaro:debug('ACHTUNG: Gewitter')
elseif (weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46') then
fibaro:debug('Wettervorhersage: Möglicherweise Schnee/Schneeregen')
elseif (weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43') then
fibaro:debug('Wettervorhersage: Schnee')
elseif (weather_code == '17' or weather_code == '35') then
fibaro:debug('ACHTUNG: Hagel')
elseif (weather_code == '8' or weather_code == '10') then
fibaro:debug('Wettervorhersage: Überfrierende Nässe')
elseif (weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23') then
fibaro:debug('Wettervorhersage: Stürmisch')
elseif (weather_code == '25') then
fibaro:debug('Wettervorhersage: Kalt (Was immer das heißt...)')
elseif (weather_code == '36') then
fibaro:debug('Wettervorhersage: Heiß (Was immer das heißt...)')
else
fibaro:debug('Code 3200. Nicht bekannt.')
if
(weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40' or
weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22' or
weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46' or
weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46' or
weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43' or
weather_code == '17' or weather_code == '35' or
weather_code == '8' or weather_code == '10' or
weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23')
and
AM_Status == 2
then
fibaro:call(94, "pressButton", "4")
fibaro:debug('Automower Modus: HOME gesetzt')
elseif
(weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34' or
weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44' or
weather_code == '26' or weather_code == '35' or
weather_code == '36')
and
AM_Status == 0 or AM_Status == 1 or AM_Status == 3
then
fibaro:call(94, "pressButton", "2")
fibaro:debug('Automower Modus: AUTO gesetzt')
else
fibaro:debug('weather_code')
fibaro:debug('AM_Status')
end
end
end
--[[
%% properties
3 ConditionCode
%% globals
--]]
local weather_code = fibaro:getValue(3, 'ConditionCode')
local previous_weather_code = fibaro:getValue(3, 'PreviousConditionCode')
local AM_Status = fibaro:getGlobal('AM_Status')
local vd_id = 94
if (weather_code == previous_weather_code) then
--fibaro:debug('weather_code hat sich nicht geändert.')
else
fibaro:debug('Wettervorhersage v0.01 gestartet.')
fibaro:debug('ConditionCode: ' ..weather_code.. ' / Prüfe Wetterbedingung')
if (weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40') then
fibaro:debug('Wettervorhersage: Regen')
elseif (weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34') then
fibaro:debug('Wettervorhersage: klar')
elseif (weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44') then
fibaro:debug('Wettervorhersage: leicht bewölkt')
elseif (weather_code == '26' or weather_code == '35') then
fibaro:debug('Wettervorhersage: bewölkt')
elseif (weather_code == '27' or weather_code == '28') then
fibaro:debug('Wettervorhersage: stark bewölkt')
elseif (weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22') then
fibaro:debug('Wettervorhersage: Nebel')
elseif (weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46') then
fibaro:debug('ACHTUNG: Gewitter')
elseif (weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46') then
fibaro:debug('Wettervorhersage: Möglicherweise Schnee/Schneeregen')
elseif (weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43') then
fibaro:debug('Wettervorhersage: Schnee')
elseif (weather_code == '17' or weather_code == '35') then
fibaro:debug('ACHTUNG: Hagel')
elseif (weather_code == '8' or weather_code == '10') then
fibaro:debug('Wettervorhersage: Überfrierende Nässe')
elseif (weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23') then
fibaro:debug('Wettervorhersage: Stürmisch')
elseif (weather_code == '25') then
fibaro:debug('Wettervorhersage: Kalt (Was immer das heißt...)')
elseif (weather_code == '36') then
fibaro:debug('Wettervorhersage: Heiß (Was immer das heißt...)')
else
fibaro:debug('Code 3200. Nicht bekannt.')
end
if
(weather_code == '6' or weather_code == '9' or weather_code == '11' or weather_code == '12' or weather_code == '40' or
weather_code == '19' or weather_code == '20' or weather_code == '21' or weather_code == '22' or
weather_code == '3' or weather_code == '4' or weather_code == '37' or weather_code == '38' or weather_code == '39' or weather_code == '45' or weather_code == '46' or
weather_code == '5' or weather_code == '7' or weather_code == '14' or weather_code == '19' or weather_code == '42' or weather_code == '46' or
weather_code == '13' or weather_code == '15' or weather_code == '16' or weather_code == '41' or weather_code == '42' or weather_code == '43' or
weather_code == '17' or weather_code == '35' or
weather_code == '8' or weather_code == '10' or
weather_code == '0' or weather_code == '1' or weather_code == '2' or weather_code == '23' or weather_code == '23')
and
AM_Status == 2
then
fibaro:call(94, "pressButton", "4");
fibaro:debug('Automower Modus: HOME gesetzt')
elseif
(weather_code == '31' or weather_code == '32' or weather_code == '33' or weather_code == '34' or
weather_code == '17' or weather_code == '29' or weather_code == '30' or weather_code == '44' or
weather_code == '26' or weather_code == '35' or
weather_code == '36')
and
AM_Status == 0 or AM_Status == 1 or AM_Status == 3
then
fibaro:call(94, "pressButton", "2");
fibaro:debug('Automower Modus: AUTO gesetzt')
else
fibaro:debug('weather_code : ')
fibaro:debug('AM_Status : ')
end
end
hatte ihn deshalb in meiner if-abfrage auch nicht drin. soll ich ihn mit rein nehmen ?
nochmals vielen dank an dich hoggle und auch an boomx, so langsam fällt bei mir der groschen mit dem lua programmieren,auch wenns oft nicht einfach zu
verstehen ist.