Benachrichtigung über sms

Hallo zusammen,

ich nutze jetzt schon recht lange folgendes Skript, welches hier mal vorgestellt worden ist und einen SMS-Versand ermöglichen soll.
Seit dem Update auf 4.530 bekomme ich folgenden Fehler:
Kann da jemand weiterhelfen?

Vielen Dank
Grüße
Volker

Skript:

--[[
%% properties
%% globals
--]]

-- DIESE DATEN ANPASSEN
-- numbers: Handynummer(n)
local numbers = {???}
-- app_key: siehe Artikel
local app_key = '???'
-- sender: Absender (Nur bei SMS);Keine Umlaute, Leerzeichen oder Sonderzeichen
local sender = 'HomeCenter'
-- action: Mögliche Aktion: sms/tts-call/both
local action = 'sms'
-- sms_type: Art der Nachricht: sms/flashsms/threema/facebook/simsme
local sms_type = 'sms'
-- fallback_time: Zeit, nachdem eine SMS zusätzlich (wenn die Nachricht nicht innerhalb der Zeit gelesen wid) versendet wird
-- In Sekunden (0 = deaktiviert; 1 Min = 60; 2 Min = 120; 10 Min = 600)
local fallback_time = '120'

-- AB HIER NICHTS MEHR ANPASSEN
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end

function sms_func(number)
local flashsms = 0
local gateway = 'auto10or11'
local message_type = 'SMS'
local fallback = ''
if (fallback_time ~= '0' and sms_type ~= 'SMS') then
 fallback_time = fallback_time/12
 -- fibaro:debug('Fallback: '..fallback_time)
 fallback = '&tryagain='..fallback_time
else
 fallback = '&tryagain=0'
end
if (sms_type == 'threema') then
 gateway = '55'
 message_type = 'Threema'
elseif (sms_type == 'facebook') then
 gateway = '57'
 message_type = 'Facebook'
elseif (sms_type == 'simsme') then
 gateway = '56'
 message_type = 'simsde'
elseif (sms_type == 'flashsms') then
 flashsms = 1
 message_type = 'FLASH-SMS'
end
local var_text = string.gsub(fibaro:getGlobal('sms_text'), ' ', '+')
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey='..app_key..'&lizenz=215100100&aid=4764&from='..sender..'&to=00'..number..'&text='..var_text..'&flash='..flashsms..'&type='..gateway..''..fallback
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      timeout = 5000
    },
    success = function(status)
      if (status.status == 200) then
       Debug( 'green', message_type.. '-Nachricht erfolgreich verschickt an +'..number)
       Debug( 'white', 'Versendeter Text: ' ..fibaro:getGlobal('sms_text'))
       if (fallback_time ~= '0' and sms_type ~= 'sms') then
         local fallback_time_calc = ((fallback_time*12)/60)
         Debug( 'orange', 'Fallback-Time von '..fallback_time_calc..' min aktiviert!')
       end
       account_balance_func()
      else 
       Debug( 'red', 'ERROR. Fehlercode: ' ..status.status)
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

function call_func(number)
local var_text = string.gsub(fibaro:getGlobal('sms_text'), ' ', '+')
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey='..app_key..'&lizenz=215100100&aid=4764&to=00'..number..'&text='..var_text..'&type=30&voice=katrin'
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      timeout = 5000
    },
    success = function(status)
      if (status.status == 200) then
       Debug( 'green', 'Anruf an +'..number..' ist rausgegangen')
       Debug( 'white', 'Durchgesagter Text: ' ..(fibaro:getGlobal('sms_text')))
       account_balance_func()
      else 
       Debug( 'red', 'ERROR. Fehlercode: ' ..status.status)
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

function round(num, places)
  places = 10 ^ places
  return math.floor((num * places) + 0.5 ) / places
end
 
function account_balance_func()
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey=' ..app_key.. '&lizenz=215100100&aid=4764&request=credits'
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      timeout = 5000
    },
    success = function(status)
      local account_balance = round(status.data,2)
      if (account_balance < 1) then
        Debug( 'orange', 'Achtung. Euer Guthaben ist weniger als 1 €. Guthaben: ' ..account_balance.. ' €')
        Debug( 'red', 'Möglicherweise konnte eure gewählten Aktionen nicht durchgeführt werden!')
      else
        Debug( 'green', 'Restliches Guthaben: ' ..account_balance.. ' €')
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

Debug('white', 'smsflatrate.net API 2.3 gestartet')
local var = 'sms_text'
if fibaro:getGlobalValue(var) == nil then
 Debug( 'red', 'Varible ' ..var..' nicht gefunden. Bitte anlegen.')
 fibaro:sleep(2*1000)
 Debug( 'red','Szene abgebrochen')
 fibaro:abort()
elseif (tonumber(fibaro:getGlobalValue(var)) == 0 or tonumber(fibaro:getGlobalValue(var)) == 1) then
 Debug( 'red', 'Varible ' ..var..' nicht gesetzt. Einmaliger Testtext wird gesetzt.')
 fibaro:setGlobal(var, 'Dies ist ein Test')
 fibaro:sleep(2*1000)
 Debug( 'red','Szene abgebrochen. Beim nächsten Start wird der eingetragene Text versendet.')
 fibaro:abort()
end

if (action == 'tts-call') then
  for o=1, #numbers do
   if numbers[o] ~= nil then
    call_func(numbers[o])
   end
  end
elseif (action == 'sms') then
 for o=1, #numbers do
   if numbers[o] ~= nil then
    sms_func(numbers[o])
   end
  end
elseif (action == 'both') then
 for o=1, #numbers do
   if numbers[o] ~= nil then
    sms_func(numbers[o])
    call_func(numbers[o])
   end
  end
end

Screenshot-2019-01-12-at-05.55.29-PM.png

Hi,
vor jeden method = ‘GET’, musst du checkcertificate = false setzen.

checkcertificate = false,
method = ‘GET’,

Danke für den Tipp, leider ändert dies nichts an der Fehlermeldung.

Hat jemand noch weitere Ideen?

Vielen Dank
Grüße
Volker

Hi,

ich habe das gleiche Problem. Hat schon jemand eine Lösung hierfür?

Grüße,
Oliver

Wie von chundc geschrieben, einfach die Überprüfung der Zertifikate an den drei relevanten Stellen im Skript deaktivieren.

Sieht dann jeweils so aus:


selfhttp:request(url, {
    options={
      checkCertificate = false,
      headers = selfhttp.controlHeaders,
      method = 'GET',
      timeout = 5000
    },

Hallo Jost,

Hast du das bei dir ausprobiert?
Das funktioniert leider nicht…
Bekomme dann immer noch das selbe Fehlerbild!

selfhttp:request(url, {
86
    options={
87
      checkcertificate = false,
88
      headers = selfhttp.controlHeaders,
89
        method = 'GET',
90
      timeout = 5000
91
    },

Checkcertifcate muss an der richtigen Stelle stehen.

Anbei die Variante die bei mir funktioniert.

selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      checkCertificate = false,
      timeout = 5000
    },

Hallo Oliver,

danke für den Hinweis, leider beeinflusst auch diese Änderung bei mir, an den 3 besagten Stellen, einfach nichts. Wäre es möglich, dass du dein funktionierendes Skript hier postest? Finde einfach den Fehler nicht…

Vielen Dank und Grüße
Volker

Hallo Volker,

anbei mein Script. Handynummern und AppKey musst Du natürlich noch eintragen.

Grüße,
Oliver

--[[
%% properties
%% globals
--]]

-- DIESE DATEN ANPASSEN
-- numbers: Handynummer(n)
local numbers = {}
-- app_key: siehe Artikel
local app_key = 'XXXXXX'
-- sender: Absender (Nur bei SMS);Keine Umlaute, Leerzeichen oder Sonderzeichen
local sender = 'FibaroAlert'
-- action: Mögliche Aktion: sms/tts-call/both
local action = 'sms'
-- sms_type: Art der Nachricht: sms/flashsms/threema/facebook/simsme
local sms_type = 'sms'
-- fallback_time: Zeit, nachdem eine SMS zusätzlich (wenn die Nachricht nicht innerhalb der Zeit gelesen wid) versendet wird
-- In Sekunden (0 = deaktiviert; 1 Min = 60; 2 Min = 120; 10 Min = 600)
local fallback_time = '120'

-- AB HIER NICHTS MEHR ANPASSEN
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end

function sms_func(number)
local flashsms = 0
local gateway = 'auto10or11'
local message_type = 'SMS'
local fallback = ''
if (fallback_time ~= '0' and sms_type ~= 'SMS') then
 fallback_time = fallback_time/12
 -- fibaro:debug('Fallback: '..fallback_time)
 fallback = '&tryagain='..fallback_time
else
 fallback = '&tryagain=0'
end
if (sms_type == 'threema') then
 gateway = '55'
 message_type = 'Threema'
elseif (sms_type == 'facebook') then
 gateway = '57'
 message_type = 'Facebook'
elseif (sms_type == 'simsme') then
 gateway = '56'
 message_type = 'simsde'
elseif (sms_type == 'flashsms') then
 flashsms = 1
 message_type = 'FLASH-SMS'
end
local var_text = string.gsub(fibaro:getGlobal('sms_text'), ' ', '+')
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey='..app_key..'&lizenz=215100100&aid=4764&from='..sender..'&to=00'..number..'&text='..var_text..'&flash='..flashsms..'&type='..gateway..''..fallback
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      checkCertificate = false,
      timeout = 5000
    },
    success = function(status)
      if (status.status == 200) then
       Debug( 'green', message_type.. '-Nachricht erfolgreich verschickt an +'..number)
       Debug( 'white', 'Versendeter Text: ' ..fibaro:getGlobal('sms_text'))
       if (fallback_time ~= '0' and sms_type ~= 'sms') then
         local fallback_time_calc = ((fallback_time*12)/60)
         Debug( 'orange', 'Fallback-Time von '..fallback_time_calc..' min aktiviert!')
       end
       account_balance_func()
      else 
       Debug( 'red', 'ERROR. Fehlercode: ' ..status.status)
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

function call_func(number)
local var_text = string.gsub(fibaro:getGlobal('sms_text'), ' ', '+')
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey='..app_key..'&lizenz=215100100&aid=4764&to=00'..number..'&text='..var_text..'&type=30&voice=katrin'
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      checkCertificate = false,
      timeout = 5000
    },
    success = function(status)
      if (status.status == 200) then
       Debug( 'green', 'Anruf an +'..number..' ist rausgegangen')
       Debug( 'white', 'Durchgesagter Text: ' ..(fibaro:getGlobal('sms_text')))
       account_balance_func()
      else 
       Debug( 'red', 'ERROR. Fehlercode: ' ..status.status)
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

function round(num, places)
  places = 10 ^ places
  return math.floor((num * places) + 0.5 ) / places
end
 
function account_balance_func()
local selfhttp = net.HTTPClient({timeout=2000})
url = 'https://www.smsflatrate.net/appkey.php?appkey=' ..app_key.. '&lizenz=215100100&aid=4764&request=credits'
selfhttp:request(url, {
    options={
      headers = selfhttp.controlHeaders,
      method = 'GET',
      checkCertificate = false,
      timeout = 5000
    },
    success = function(status)
      local account_balance = round(status.data,2)
      if (account_balance < 1) then
        Debug( 'orange', 'Achtung. Euer Guthaben ist weniger als 1 €. Guthaben: ' ..account_balance.. ' €')
        Debug( 'red', 'Möglicherweise konnte eure gewählten Aktionen nicht durchgeführt werden!')
      else
        Debug( 'green', 'Restliches Guthaben: ' ..account_balance.. ' €')
      end
    end,
    error = function(error)
      print "ERROR"
      print(error)
    end
})
end

Debug('white', 'smsflatrate.net API 2.3 gestartet')
local var = 'sms_text'
if fibaro:getGlobalValue(var) == nil then
 Debug( 'red', 'Varible ' ..var..' nicht gefunden. Bitte anlegen.')
 fibaro:sleep(2*1000)
 Debug( 'red','Szene abgebrochen')
 fibaro:abort()
elseif (tonumber(fibaro:getGlobalValue(var)) == 0 or tonumber(fibaro:getGlobalValue(var)) == 1) then
 Debug( 'red', 'Varible ' ..var..' nicht gesetzt. Einmaliger Testtext wird gesetzt.')
 fibaro:setGlobal(var, 'Dies ist ein Test')
 fibaro:sleep(2*1000)
 Debug( 'red','Szene abgebrochen. Beim nächsten Start wird der eingetragene Text versendet.')
 fibaro:abort()
end

if (action == 'tts-call') then
  for o=1, #numbers do
   if numbers[o] ~= nil then
    call_func(numbers[o])
   end
  end
elseif (action == 'sms') then
 for o=1, #numbers do
   if numbers[o] ~= nil then
    sms_func(numbers[o])
   end
  end
elseif (action == 'both') then
 for o=1, #numbers do
   if numbers[o] ~= nil then
    sms_func(numbers[o])
    call_func(numbers[o])
   end
  end
end

Hallo Oliver,

vielen vielen Dank!
Es läuft nun wieder. :slight_smile: Keine Ahnung woran es lag…

Viele Grüße
Volker

Hallo,
ich bin neu an der HC2 und muss das Thema leider noch mal aktivieren:

Ich habe eine Szene zur Benachrichtigung per SMS wie oben beschrieben verwendet (Danke @Oliver).
Szene läuft, aber ich erhalte folgende Meldung:

SMS kommt aber leider nicht bei mir an.
Auf meinem Konto bei https://noc.smsflatrate.net sind keine gesendeten SMS verbucht.

Habe ich da irgendwo den Wurm drin? Wäre nett, wenn mir da jemand helfen kann.
Vielen Dank schon mal

Kati