Guten Morgen,
ich will mir morgens meine Kalendereinträge von der Sonos vorlesen lassen. Die Kalendereinträge stehen in einem Array MyGCal. Über einen HTTP Requests schicke ich den Namen an die Sonosbox. Wenn es nur einen Eintrag gibt, wird dieser auch vorgelesen. Wenn es aber mehrere Einträge gibt, wird immer nur einer vorgelesen.
Hier mein Code:
local jsonMyGCal = fibaro:getGlobal("GCalendar");
local MyGCal = json.decode(jsonMyGCal)
for i = 1, #MyGCal do
if os.date("%a %b %d") == os.date("%a %b %d", MyGCal[i].StartDate) then
local Ereignisname = string.gsub(MyGCal[i].Name, " ", "%%20")
local http = net.HTTPClient()
http:request('http://192.168.86.37:5005/wohnzimmer/say/' .. Ereignisname .. '/de-de', {
success = function(resp)
if resp.status == 200 then
fibaro:debug(resp.status)
fibaro:debug('sollte gehen')
local status1 = resp.status
else
fibaro:debug(resp.status)
local status1 = resp.status
end
end
})
laufzeit = 4 -- Sekunden
a = 1 -- Vergleichswert
while a <= laufzeit do
fibaro:debug('Timer läuft '..a..' Sekunden')
fibaro:debug(status1)
a = a + 1
fibaro:sleep(1000)
end
print "test123456"
-- fibaro:sleep(15*1000)
end
end
Das Script durchläuft zunächst zwei mal die SChleife (zwei mal Ausgabe von “test123456”). Dann liest die Sonosbox einen Kalendereintrag vor. Zum Schluss kommt noch zwei mal der Status 200 vom HTTP Request. Es ist egal, wie lange ich die While Schleife einstelle.
Wie mache ich es, dass die Schleife zunächst einen HTTP Request abschickt und dann beim nächsten Durchlauf den nächsten HTTP Request absendet?
Vielen Dank
Sebastian