Restart Raspberry Pi din FHEM

Raspberry pi reboot
Raspberry pi reboot

In tutorialul de astazi vom vedea cum sa repornim Raspberry PI din FHEM. Pentru a realiza automatizarea avem nevoie sa ne logam prin SSH la Raspberry PI. Vom folosi un editor de texte preinstalat, si anume nano.

Dschidem fisierul /etc/passwd cu urmatoarea comanda:

sudo nano /etc/passwd

In partea de jos a textului vom vedea:

fhem:x:999:20::/opt/fhem:/bin/false

pe care il vom modifica in:

fhem:x:999:20::/opt/fhem:/bin/bash

Importanta este doar partea de final a definitiei sa fie schimbata din false (sau none in alte distributii de linux) -> bash, asta in cazul in care pentru tine este posibil ca definitia sa arate altfel.

Salvam schimbarea apasand pe Ctrl+x si confirmam cu y.

Editam fisierul /etc/sudoers cu urmatoarea comanda:

sudo nano /etc/sudoers

Si la finalul acestia adaugam urmatoarele:

Defaults                  requiretty
Defaults:%dialout        !requiretty
Defaults:fhem            !requiretty
fhem ALL=(ALL) NOPASSWD: ALL

Desigur, salvam cu Ctrl+x si confirmam cu y.

Comanda pentru a reporni Raspberry PI din FHEM este { system("sudo reboot &") } , pe care o putem scrie in linia de comanda a FHEM, insa nu ar fi comod ca de fiecare data cand vrem sa executam aceasta comanda sa o scriem manual, asa ca putem sa definim un Switch alaturi de care putem pune ori un DOIF, ori un Notify, care sa lanseze aceasta comanda.

Eu am exemplificat mai jos combinand un Dummy Switch si un DOIF, pe care le-am pus in Room-ul System si grupate in blocul Reboot. Dar sa vedem definitiile pentru fiecare si explicatia lor.

Restart sistem cu DOIF

Prima data definim Dummy-ul, pe care il grupam in grupul Reboot, din room System, si pentru a putea sa ii schimbam starea on/off, atribuim acest lucru cu webCmd:

define Reboot dummy
attr Reboot group Reboot
attr Reboot room System
attr Reboot webCmd on:off

Pentru definita de DOIF ne vom folosi de switchul Reboot si atunci cand el este on se va executa comanda pentru restart a sistemului, insa inainte de restart trebuie sa setam ca switchul sa revina in pozitia de off (nu am vera ca mai tarziu cand vom integra acest switch in propria noastra interfata web el sa ramana tot timpul pe on). attr reboot_do do always Va face ca acest DOIF sa fie activ de fiecare data. Asa cum mai devreme am pus switchul in room System si grupul Reboot, la fel vom face si cu DOIF-ul nostru nou creat, pentru a tine lucrurile ordonate.

define reboot_do DOIF ([Reboot] eq "on") (set Reboot off, { system("sudo reboot &") })
attr reboot_do do always
attr reboot_do group Reboot
attr reboot_do room System
attr reboot_do wait 30

Noutatea apare aici in attr reboot_do wait 30 si acest atribut va intarzia cu 30 secunde executia comenzilor. Desigur fiecare poate sa modifice aceasta durata. De retinut este ca argumentul se masoara in secunde.

Restart sistem cu Notify

Daca preferam varianta de cu Notify atunci definitia nu trebuie sa fie foarte complicata:

Daca preferam varianta de cu Notify atunci definitia va fi:

define Reboot_Notify_on notify Reboot:on set Reboot off; { system("sudo reboot &") }
attr Reboot_Notify_on group Reboot
attr Reboot_Notify_on room System

Desigur va sta in aceelai room cu dummy-switchul si in acelasi grup. Prima comanda executata va fi cea de a tragere switchul inapoi pe off, dupa care va fi executata comanda pentru repornire.

Dezavantajul la Notify este ca aici nu se poate pune un timer pentru asteptare de cateva secunde, si comanda va fi executata imediat.

Iata ca in acest fel vom reusi sa repornim Raspberry PI ori de cate ori va fi nevoie fara a fi necesar sa stabilim o legatura SSH cu acesta sau sa ii intrerupem alimentarea. In mod similar se pot transmite si alte comenzi pentru care de altfel ar fi fost nevoie sa ne logam remote la server, pentru a automatiza Update-urile de sistem, de exemplu.

De Iulian Susnea

Pasionat de tehnologie, gadgeturi smart home si automatizari si am pornit la drum in crearea acestui site cu tutoriale pentru cele mai importante sisteme Smart Home ale momentului din dorinta de a-i ajuta pe cei la inceput de drum.

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *