Shelly Timer über html/php schalten

  • Hallo Forum!

    Ich weiß nicht ob ich hier richtig bin...gehört eventuell zu html/php....

    Ich würde gerne einen Shelly über html schalten. Der Befehle zum Schalten ist mir klar, aber ich möchte nicht, das sich der Link öffnet.

    Ich will auf der eigentlichen Seite bleiben.

    Code
    <button class="favorite styled" onclick="gehAuf()">Pumpe für 30 Minuten "EINSCHALTEN"</button>
    <script>
    function gehAuf() {
    window.open("http://IP.IP.IP.IP/relay/0?turn=on&timer=1800");
    }
    </script>

    Hat jemand eine Idee?

    Danke :)

  • naja, wenn du explizit einen window.open benutzt dann ist es nicht verwunderlich, dass sich ein entsprechendes Fenster öffnet..

    was du machen möchtest ist ein im "Hintergrund" stattfindender Aufruf der URL, das geht z.B. über ein XMLHTTPRequest Objekt.

    Das könnte dann ganz einfach (aber nicht schön) so aussehen.

    Da solche Ajax-Requests auf "Fremde URLs" aber von Hause aus vom Browser verboten werden muss, damit du auch Feedback vom Aufruf bekommst, im Shelly eine Option gesetzt werden..

    Die Findest du unter Internet & Security - Advanced Developer-Settings. Der Haken bei "Allow Cross-Origin Resource Sharing" muss gesetzt werden.

    pasted-from-clipboard.png

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • WoW DANKE das ging ja schnell..., muss ich zu Hause versuchen!

    Da ich es hier anscheindend mit einem Profi zu tun habe :) - Frage:

    Einen Button der den derzertige Zustand anzeigt ist auch möglich?

    Ich mache das zurzeit mit einem sh script...ist nicht wirklich das gelbe vom Ei...

    (Bin zwar kein Neuling, aber auch kein echter Programmierer..ein wenig php,html,script,py..)

    Die sh:

    Bash
    #!/bin/bash
    shelly_info1=$(curl -s -u http://IP.IP.IP.IP/status | jq '.relays[0] .ison')
    shelly_info2=$(curl -s -u http://IP.IP.IP.IP/status | jq '.relays[0] .timer_remaining')
    if [ "$shelly_info1" = "false" ] ; then
    echo "Pumpe ist AUS"
    else
    echo "Die Pumpe ist noch für" $shelly_info2 "Sekunden in Betrieb"
    fi
    exit

    Das php:

    PHP
    <?php
    $output = shell_exec('sh ./abfrage.sh');
    echo $output;
    ?>
  • Das geht auch alles direkt über Javascript, vorausgesetzt der Haken bei Allow Cross Origin Ressource Sharing ist gesetzt.
    Hab hier mal was zusammengebastelt und ein paar Kommentare reingeschrieben. bei der Gelegenheit hab ich es auf die .fetch-API vom Browser umgebaut. Die ist etwas eleganter und moderner als der XMLHttpRequest..

    ich hoffe das ist soweit verständlich, wenn nicht einfach fragen..

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • Hi,

    passt vlt. nicht unbedingt.

    Ich hab einen Shelly 1 Plus und finde die Einstellungen für Allow Cross-Origin Resource Sharing nicht.

    Firmware Version: 0.9.0-beta2

    Soweit ich versteh ist das Fenster erst ab 1.10 verfügbar. Kann mir jemand erklären wie ich die Firmware auf die benötigte Version bekomme ?

    Danke und sry wenn es nicht unbedingt reinpasst

  • Dieses Thema enthält 5 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.