Shelly Scripting

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliate-Links.

Suchergebnisse

Shelly Scripting
Shelly Scripting
  • 26.09.2021
  • Level 2
  • Grundlagen
  • Scripting

Vor wenigen Stunden hat Allterco Robotics (das Unternehmen hinter der Marke Shelly) das neue Scripting-Feature freigegeben. In diesem Video schauen wir uns gemeinsam an, was man damit anstellen kann. Durch den sehr viel leistungsfähigeren ESP32 in den Pro- und Plus-Komponenten, bleiben freie Ressourcen für eigene Logik übrig. Diese kann mit mJs (einem Subset von JavaScript) umgesetzt werden.

Über dieses Feature kann man zum Beispiel die Geräte über HTTP miteinander vernetzen und so zum Beispiel mit einem Shelly Pro 4 PM einen “einfachen” Shelly 2.5 ansteuern. Das Gleiche gilt natürlich auch für andere Shelly-Geräte. Mehr dazu im Video!

Video

Home-Assistant-Master-Kurs

Code-Beispiele

let greeting = "Hello world!";
print(greeting);
let CONFIG = {
    accuWeatherAPIKEY: "...",
    weatherForecastEndpoint: "http://dataservice.accuweather.com/forecasts/v1/daily/1day/",
    weatherCurrentEndpoint: "http://dataservice.accuweather.com/currentconditions/v1/",
    location: 170358,
    coverControlTimer: 15 * 60 * 1000,
    coverControlDevice: "http://192.168.205.244/"
};

function getWeatherURLForLocation(location) {
    return CONFIG.weatherCurrentEndpoint +
        JSON.stringify(CONFIG.location) +
        "?apikey=" +
        CONFIG.accuWeatherAPIKEY +
        "&details=true";
}

function cover(position) {
    print("Cover will ", position);
    /*
    Shelly.call(
        "http.get",
        { url: CONFIG.coverControlDevice + "roller/0?go=" + position },
        function (response, error_code, error_message, ud) {
            print(JSON.stringify(response));
        },
        null
    );
    */
}

function CoverControlLocation() {
    Shelly.call(
        "http.get",
        { url: getWeatherURLForLocation() },
        function (response, error_code, error_message) {
            let weatherData = JSON.parse(response.body);
            if (weatherData[0].CloudCover > 60) {
                cover("open");
            }
            if (weatherData[0].CloudCover < 40) {
                cover("close");
            }
            print("Wolken: ", weatherData[0].CloudCover, "%");
        }
    );
}

Timer.set(
    CONFIG.coverControlTimer,
    true,
    function (ud) {
        CoverControlLocation();
    },
    null
);
Shelly.addEventHandler(
    function (event, ud) {
        print(JSON.stringify(event));
    },
    null
);
let switch0Timer = null;

function swOff(idx) {
    print('switching off ', idx);

    Shelly.call(
        'switch.set',
        { id: idx, on: false },
        function (result, error_code, error_message, ud) {
            print('switched off ', idx);
        }
    );
}

Shelly.addEventHandler(
    function (event, ud) {
        if (typeof event.component !== 'undefined' && typeof event.info.output !== 'undefined') {
            if (event.component === 'switch:0') {
                if (switch0Timer) {
                    print('clearing timeout');

                    Timer.clear(switch0Timer);
                }

                if (event.info.output) { // Just start if ouput is 'true'
                    print('starting timeout');

                    switch0Timer = Timer.set(5 * 1000, // Switch off after 5 Seconds
                        false,
                        swOff,
                        0
                    );
                }
            }
        }
    },
    null
);

Transparenz-Hinweis (Level 2)

Für diesen Beitrag wurden mir Produkte kostenfrei zur Verfügung gestellt! Es wurden keinerlei Bedingungen, Richtlinien oder Vorgaben bezüglich der Inhalte, welche ich in meiner Bewertung äußern darf, auferlegt.

Darüber hinaus habe ich keine zusätzliche Vergütung erhalten.

» Mehr erfahren

Home-Assistant-Master-Kurs
Newsletter
  • Zugang zu exklusiven Inhalten (Bonus-Kurse)
  • Monatliche Zusammenfassungen
  • Informationen zu neuen Kurs-Lektionen
  • Einblicke hinter die Kulissen
  • 5€-Gutschein für den Online-Shop
Jetzt eintragen »
Community-Forum
Folge mir
Du willst mehr?

Smart-Home-Trainings von A-Z

Steig' noch tiefer in die Themen ein und meistere Deine Projekte! Über 16.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

Abonniere jetzt den Newsletter für
spannende Neuigkeiten! interessante Angebote! neue Kurs-Inhalte!
* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir unregelmäßig Informationen und Produktempfehlungen aus dem Themengebiet »Smart Home« zugesendet werden. Mit dem Eintrag akzeptiere ich die Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.