Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Klingelscript Problem mit Phantom JS

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    659

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

[gelöst] Klingelscript Problem mit Phantom JS

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 1 Kommentatoren 261 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ChaotC Offline
    ChaotC Offline
    Chaot
    schrieb am zuletzt editiert von
    #1

    Ich nutze seit einiger Zeit ein Script für meine Türklingel.

    Das Ding ist mittlerweile erstaunlich gewachsen, aber jetzt habe ich ein Problem.

    Das Orignalscript sieht so aus:

    ! ````
    var sperre = false;
    ! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
    if(!sperre) {
    sperre = true;
    setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
    // oder
    //setState("vis.0.control.instance", 'FFFFFFFF');
    //setState("vis.0.control.data", 'DemoView');
    //setState("vis.0.control.command", 'changeView'); // muss immer letzte sein
    // Nach 10 Sekunden, zeige wieder Start View
    setTimeout(function () {
    setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
    }, 60000);
    setState("tr-064.0.states.ring"/ring/, '**611, 15');
    sendTo("pushover", "send", {
    message: 'Klingel',
    sound: ""
    });
    timeout = setTimeout(function () {
    setState("alexa2.0.Echo-Devices.G2A0P3XXXXX60LLE.Player.volume"/volume/, 90, true);
    }, 500);
    timeout = setTimeout(function () {
    setState("alexa2.0.Echo-Devices.G2A0P3XXXXX60LLE.Commands.speak"/speak/, 'Es ist jemand an der Tür');
    }, 1000);
    timeout = setTimeout(function () {
    setState("alexa2.0.Echo-Devices.G2A0P3XXXXX060LLE.Player.volume"/volume/, 50, true);
    }, 1500);
    setTimeout(function() {
    sperre = false;
    }, 5000);
    }
    });

    
    Und funktioniert einwandfrei.
    
    Jetzt möchte ich gerne einen Screenshot der Kamera per pushover versenden.
    
    Ich kann aus der Kamera nicht so direkt einen Screenshot ziehen sondern muss den Umweg über EyeMotion gehen. Aber das sollte nachdem was ich gelesen habe ja über den Phantom.JS Adapter funktionieren.
    
    Wenn ich das Script alleine laufen lasse wird das Bild erstellt und ich kann das über den Link in irfan View öffnen.
    
    Wenn ich allerdings jetzt den Code in mein Script schreibe wird mir das Bild nicht zugesendet.
    
    Wo liegt mein Fehler?
    
    >! ````
    var sperre = false;
    >! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
      if(!sperre) {
        sperre = true;
         sendTo('phantomjs.0', 'send', {
        url:                    'http://192.168.8.95:8765/picture/2/current/?_username=admin&_signature=52634d7b92e34c0b5c865eeb8e3d5935741934ad',
        output:                 'picture.png',  // default value
        width:                  800,            // default value
        height:                 600,            // default value
        timeout:                2000,           // default value
        zoom:                   1,              // default value
    >!     'clip-top':             0,              // default value
        'clip-left':            0,              // default value
        'clip-width':           800,            // default value is equal to width
        'clip-height':          600,            // default value is equal to height
        'scroll-top':           0,              // default value
        'scroll-left':          0,              // default value
    >!     online:                 false           // default value
    }, function (result) {
        if (result.error) {
            console.error(JSON.stringify(result.error));
        }
        if (result.stderr) {
            console.error(result.stderr);
        }
        if (result.stdout) {
            console.log(result.stdout);
        }
        console.log(result.output);
    });
    
         setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
               // oder
               //setState("vis.0.control.instance", 'FFFFFFFF');
               //setState("vis.0.control.data",     'DemoView');
               //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
               // Nach 10 Sekunden, zeige wieder Start View
               setTimeout(function () {
                          setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
               }, 60000); 
        setState("tr-064.0.states.ring"/*ring*/, '**611, 15');
        sendTo("pushover", "send", {
           message: 'Klingel',
              file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png",   
              sound: ""
        });
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Player.volume"/*volume*/, 90, true);
        }, 500);
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür');
        }, 1000);
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0PXXXXX060LLE.Player.volume"/*volume*/, 50, true);
        }, 1500);
        setTimeout(function() {
           sperre = false;
        }, 5000); 
      }  
    });
    

    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

    1 Antwort Letzte Antwort
    0
    • ChaotC Offline
      ChaotC Offline
      Chaot
      schrieb am zuletzt editiert von
      #2

      Soweit ich das sehe scheint kein Versand per Pushover zu funktionieren.

      Ich habe das jetzt mal geändert und versende das per mail.

      Allerdings habe ich jetzt ein Problem mit dem Anhang.

      Es wird ein Bild versendet das keine Dateiendung hat:

      sendTo('phantomjs.0', 'send', {
          url:                    'http://192.168.8.95:8765/picture/2/current/?_username=admin&_signature=52634d7b92e34c0b5c865eeb8e3d5935741934ad',
          output:                 'picture.png',  // default value
          width:                  800,            // default value
          height:                 600,            // default value
          timeout:                2000,           // default value
          zoom:                   1,              // default value
      
          'clip-top':             0,              // default value
          'clip-left':            0,              // default value
          'clip-width':           800,            // default value is equal to width
          'clip-height':          600,            // default value is equal to height
          'scroll-top':           0,              // default value
          'scroll-left':          0,              // default value
      
          online:                 true           // default value
      }, function (result) {
          if (result.error) {
              console.error(JSON.stringify(result.error));
          }
          if (result.stderr) {
              console.error(result.stderr);
          }
          if (result.stdout) {
              console.log(result.stdout);
          }
          console.log(result.output);
      
      });
      timeout = setTimeout(function () {
      sendTo("email", "send", {
           text: '',
           to: 'XXXXXXX@gmail.com',
           subject: 'Klingel',
           attachments:[
              {path: 'http://192.168.XXX.XXX:8082/state/phantomjs.0.pictures.picture_png', cid: "file1"},
            ]
      
       });
       }, 5000);
       });
      

      Ich kann das

      "picture_png"

      zwar am PC öffnen und am Smartphone über den Deateiexplorer.

      Aber ich kann das nicht direkt öffnen.

      @Bluefox: Gibt es die Möglichkeit das das Bild als "picture.png" versendet wird?

      Wenn ich den Link entsprechend ändere wird das nicht mehr gesendet obwohl es so auf der Platte liegt.

      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

      1 Antwort Letzte Antwort
      0
      • ChaotC Offline
        ChaotC Offline
        Chaot
        schrieb am zuletzt editiert von
        #3

        :oops: :oops:

        Ich bin manchmal einfach blind.

        Mit dem richtigen Pfad

        /opt/iobroker/node_modules/iobroker.phantomjs/picture.png
        

        klappt das auch.

        Zur Vollständigkeit das komplette Klingelscript:

        ! ````
        var sperre = false;
        ! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
        if(!sperre) {
        sperre = true;
        sendTo('phantomjs.0', 'send', {
        url: 'http://192.168.XXX.XXX:8765/picture/2/current/?_username=admin&_signature=5xxxxxxxxxx65eeb8e3d5935741934ad',
        output: 'picture.png', // default value
        width: 800, // default value
        height: 600, // default value
        timeout: 2000, // default value
        zoom: 1, // default value
        ! 'clip-top': 0, // default value
        'clip-left': 0, // default value
        'clip-width': 800, // default value is equal to width
        'clip-height': 600, // default value is equal to height
        'scroll-top': 0, // default value
        'scroll-left': 0, // default value
        ! online: true // default value
        }, function (result) {
        if (result.error) {
        console.error(JSON.stringify(result.error));
        }
        if (result.stderr) {
        console.error(result.stderr);
        }
        if (result.stdout) {
        console.log(result.stdout);
        }
        console.log(result.output);

        });
        timeout = setTimeout(function () {
        sendTo("email", "send", {
        text: '',
        to: 'XXXXXX@gmail.com',
        subject: 'Klingel',
        attachments:[
        {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"},
        ]

        });
        }, 5000);

         setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}');
               // oder
               //setState("vis.0.control.instance", 'FFFFFFFF');
               //setState("vis.0.control.data",     'DemoView');
               //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
               // Nach 10 Sekunden, zeige wieder Start View
               setTimeout(function () {
                          setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
               }, 60000); 
        setState("tr-064.0.states.ring"/*ring*/, '**611, 15');
        sendTo("pushover", "send", {
           message: 'Klingel',
              file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png",   
              sound: ""
        });
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 90, true);
        }, 500);
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür');
        }, 1000);
        timeout = setTimeout(function () {
        setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 50, true);
        }, 1500);
        setTimeout(function() {
           sperre = false;
        }, 5000); 
        

        }
        });

        ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        483

        Online

        32.5k

        Benutzer

        81.6k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe