empierre / MyDomoAtHome

MyDomoAtHome - REST interface for ImperoHome with Domoticz (ISS)
http://domoticz.com/wiki/ImperiHome
GNU General Public License v3.0
32 stars 22 forks source link

synology restart #183

Closed empierre closed 4 years ago

empierre commented 4 years ago

[quote=jluc2808 post_id=71613 time=1563460239 user_id=3465] bonjour ,

j'ai de manière aléatoire des arrêts de MyDomoAtHome, installé sur mon NAS synology DSM6.2.2 version 0.2.39, je n'ai pas réussit à trouvé pourquoi, mais je constate que le service est arrêté. j'utilise ce service principalement pour impérihome qui de ce fait ne répond plus (of course!!!)

[/quote]

empierre commented 4 years ago

local delai = 15 -- pour initialiser le timer, changer la valeur si trop rapide ou lent return { on = { timer = { 'every ' .. delai .. ' minutes' -- pour programmer la récurrence de la requête dans le temps }, httpResponses = { 'trigger_normal', -- quand tout s'est bien passé jusque là
'trigger_error' -- on a déjà relancé 1 fois } }, execute = function(domoticz, item)

    if (item.isTimer) then
        domoticz.openURL({
            url = 'http://192.168.1.xx:3002',                                       -- appel de myDomoAtHome, mettre le bon IP
            method = 'GET',
            callback = 'trigger_normal',                                                   -- regarder httpResponses plus loin.
        })
    end

    if (item.isHTTPResponse) then
        if (item.statusCode == 200) then                                            -- le service est opérationnel  
                local someValue = "MyDomoAtHome fonctionne correctement "           -- prépare le texte 
                domoticz.log(someValue, domoticz.LOG_INFO)                          -- log l'info
                domoticz.devices('myDomoAtHome').updateText(someValue)              -- écrire le text dans le dispositif Domoticz, le nom doit correspondre au dispositif virtuel 

    else

           local someValue_error = "MyDomoAtHome ne fonctionne pas, retour du status:" ..item.statusCode .. ", démarrage lancé (start)"     -- prépare le texte

                if item.trigger == 'trigger_normal' then 
                    os.execute("echo ###### | sudo -S synoservice --start pkgctl-MyDomoAtHome")                            -- execute la relance du service dans SYNOLOGY
                    domoticz.devices('myDomoAtHome').updateText(someValue_error)
                    domoticz.log(someValue_error, domoticz.LOG_INFO)                                                                      -- log l'info
                else
                    os.execute("echo ###### | sudo -S synoservice --restart pkgctl-MyDomoAtHome")
                    someValue_error = "MyDomoAtHome ne fonctionne pas, retour du status:" ..item.statusCode .. ", redémarrage lancé (restart)"     -- prépare le texte
                end
                -- changer le pswd par le votre, malheureusement en clair
               -- on va laisser un délai pour permettre au service de redémarrer et immédiatement on va contrôler que ça fonctionne 
                domoticz.openURL({
                    url = 'http://192.168.1.xx:3002',                                                                           -- appel myDomoAtHome , mettre le bon IP
                    method = 'GET',
                    callback = 'trigger_error',                                                                                       -- see httpResponses above.
                }).afterSec(20)                                                                                                 -- appel de la requête après 20 secondes
                -- update some device in Domoticz
                domoticz.devices('myDomoAtHome').updateText(someValue_error)                                                          -- écrire le text dans le dispositif Domoticz, le nom doit correspondre au dispositif virtuel
    --          domoticz.log('There was a problem handling the request', domoticz.LOG_ERROR)                                    -- log erreur 
                domoticz.log(item, domoticz.LOG_ERROR)                                                                          -- uncomment seulement si nécessaire

        end

    end
end 

}

empierre commented 4 years ago

https://internet-of-things.blog/en/how-to-automatically-start-openhab-on-a-diskstation/

task> Schedule tab run it every 5 minutes, the whole day, every day: user defined script chroot /var/packages/debian-chroot/target/var/chroottarget/ /root/check_if_openHAB_is_running.sh

empierre commented 4 years ago

synoservice --status pkgctl-MyDomoAtHome Service [pkgctl-MyDomoAtHome] status=[enable] required upstart job: [pkgctl-MyDomoAtHome] is start. ' =======================================

Service [pkgctl-MyDomoAtHome] status=[disable] required upstart job: [pkgctl-MyDomoAtHome] is stop. '=======================================

empierre commented 4 years ago

solution: Une proposition à tester, visiblement lancer un start n'a pas d'effet si le process tourne déjà;

Panneau de configuration > Planificateur de taches > Créer > Tache planifiée > Script défini par l'utilisateur onglet programmer > Fréquence: toutes les 5 minutes paramètre de tâches > Script: bash synoservice --start pkgctl-MyDomoAtHome