Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. ioBroker драйвера
  5. Как подключить устройство, включающееся внешним скрипт (php)?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    677

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Как подключить устройство, включающееся внешним скрипт (php)?

Geplant Angeheftet Gesperrt Verschoben ioBroker драйвера
14 Beiträge 6 Kommentatoren 2.6k Aufrufe
  • Ä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.
  • V Offline
    V Offline
    Vlad_k
    schrieb am zuletzt editiert von
    #2

    вопрос не о чем, что за устройство, как подключено?

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      andrey99986
      schrieb am zuletzt editiert von
      #3

      @Vlad_k:

      вопрос не о чем, что за устройство, как подключено? `
      Не важно какое устройство - цель не заменить код (php), а просто вызывать внешнюю программу php.

      Само устройство 7 -канальная розетка, работающая через COM-порт.

      Понятно, что можно переписать код действующего скрипта, но пока хватит вызова внешней программы с обработкой стандартного вывода.

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        instalator
        schrieb am zuletzt editiert von
        #4

        @andrey99986:

        @Vlad_k:

        вопрос не о чем, что за устройство, как подключено? `
        Не важно какое устройство - цель не заменить код (php), а просто вызывать внешнюю программу php.

        Само устройство 7 -канальная розетка, работающая через COM-порт.

        Понятно, что можно переписать код действующего скрипта, но пока хватит вызова внешней программы с обработкой стандартного вывода. `
        Php скрипт то как данные принимает?

        Высокий уровень Децибел вреден для здоровья!

        http://blog.instalator.ru/

        1 Antwort Letzte Antwort
        0
        • H Offline
          H Offline
          Haus
          schrieb am zuletzt editiert von
          #5

          @andrey99986:

          Есть устройство, которое включается-выключается php-скриптом.

          Можно ли создать это устройство в iobroker подключив через драйвер javascript?

          Покажите пример пожалуйста.

          Какие есть другие варианты? (При условии что внешний скрипт это "черный ящик",- исходный код не доступен). `
          Если скрипт отдает какое то одно значение

          createState ( 'blabla','' );
          var request       = require ( 'request' );
          request ('http://192.168.1.11/script.php', function ( error, response, body ) {
          	if ( !error && response.statusCode == 200 ) {
                        setState ( blabla, body );
                  }
          });
          
          

          js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

          admin: 3.6.0

          javascript: 4.1.10

          web: 2.4.1 vis: 1.1.10

          cloud: 2.6.2

          Server: DELL FX170 / linux: Debian 9.5 Stretch

          Adapter: MegaD-2561, Mega-ES…

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            andrey99986
            schrieb am zuletzt editiert von
            #6

            @instalator:

            @andrey99986:

            @Vlad_k:

            вопрос не о чем, что за устройство, как подключено? `
            Не важно какое устройство - цель не заменить код (php), а просто вызывать внешнюю программу php.

            Само устройство 7 -канальная розетка, работающая через COM-порт.

            Понятно, что можно переписать код действующего скрипта, но пока хватит вызова внешней программы с обработкой стандартного вывода. Php скрипт то как данные принимает?
            Всё таки толкаете меня по пути перезаписи кода? :)

            ` > $port=$argv[1];

            $act=$argv[2];

            if ($act == 1)

            $act = "ON";

            else

            $act = "OFF" ;

            $device="/dev/ttyUSB1";

            exec('/bin/stty -F '.$device.' cs8 9600 -crtscts -parenb -cstopb');

            // Open port

            $fp = fopen($device, "r+");

            if (!$fp) {

            echo "Error opening port, try attempt 2";

            sleep(1000);

            $fp = fopen($device, "r+");

            if (!$fp) {

            echo "Error opening port, try attemp 3";

            sleep(1000);

            $fp = fopen($device, "r+");

            if (!$fp) {

            echo "Error opening port. Contact admin";

            die();

            }

            }

            }

            function myread_port() {

            $myresult = '';

            $myc = '';

            global $fp;

            stream_set_blocking($fp,0);

            $timeout=microtime(1)+0.5;

            while (microtime(1)<$timeout) {

            $myc=fgetc($fp);

            if($myc === false){

            usleep(5);

            continue;

            }

            $myresult .= $myc;

            }

            return $myresult;

            }

            $cmd="#PWD123456#"."OUT".$port."=".$act."\r";

            echo "\n$cmd\n";

            fwrite($fp, $cmd);

            $result = myread_port();

            echo "$result"; `

            1 Antwort Letzte Antwort
            0
            • H Offline
              H Offline
              Haus
              schrieb am zuletzt editiert von
              #7

              @andrey99986:

              @instalator:

              @andrey99986:

              Не важно какое устройство - цель не заменить код (php), а просто вызывать внешнюю программу php.

              Само устройство 7 -канальная розетка, работающая через COM-порт.

              Понятно, что можно переписать код действующего скрипта, но пока хватит вызова внешней программы с обработкой стандартного вывода. Php скрипт то как данные принимает?
              Всё таки толкаете меня по пути перезаписи кода? :) `
              Костылей можно наделать, но все ровно придётся скрипт а ещё лучше драйвер если устройств несколько делать. Это устройство серийное?

              Вот так я временно дергал данные из базы и отправлял их в ioBroker(предварительно создаём переменную createState ( 'temp_in_bathroom2','' );) через драйвер simple-api

              $result = $ab->select_line("SELECT dev_value temp_bathroom2 FROM tmp_".$temp_bathroom2['ListID']." WHERE ContID=".$temp_bathroom2['ContID']." ORDER BY dev_date DESC LIMIT 1");
              $temp_bathroom2 = $result['temp_bathroom2'];
              $fp=fopen("http://192.168.1.11:8087/set/javascript.0.temp_in_bathroom2?value=$temp_bathroom2","r");
              fclose($fp);
              
              

              js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

              admin: 3.6.0

              javascript: 4.1.10

              web: 2.4.1 vis: 1.1.10

              cloud: 2.6.2

              Server: DELL FX170 / linux: Debian 9.5 Stretch

              Adapter: MegaD-2561, Mega-ES…

              1 Antwort Letzte Antwort
              0
              • V Offline
                V Offline
                Vlad_k
                schrieb am zuletzt editiert von
                #8

                $cmd="#PWD123456#"."OUT".$port."=".$act."\r";

                ну вот хоть какая то информация. просто выводи в ком порт команды из своего js скрипта

                1 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #9

                  @andrey99986:

                  Есть устройство, которое включается-выключается php-скриптом.

                  Можно ли создать это устройство в iobroker подключив через драйвер javascript?

                  Покажите пример пожалуйста.

                  Какие есть другие варианты? (При условии что внешний скрипт это "черный ящик",- исходный код не доступен). `
                  Допустим есть два php скрипта

                  http://someip/set.php?state=VALUE , где VALUE может быть "on" и "off"

                  и

                  http://someip/get.php который возвращает состояние устройства

                  Тогда скрипт будет выглядеть так:

                  var request = require('request');
                  var getURL = 'http://someip/get.php';
                  var setURL = 'http://someip/set.php?state=';
                  
                  // function for control blackbox
                  function setBlackBox(value) {
                  	value = (value === 'on' || value === '1' || value === 1 || value === 'true' || value === true) ? 'on' : 'off';
                  	request(setURL + value);
                  }
                  
                  // function for read state of blackbox
                  function pollValue() {
                  	request(getURL, function (error, response, body) {
                  		if (!error && response.statusCode == 200) {
                  			setState('blackBox', (body.indexOf('1') !== -1 || body.indexOf('on') !== -1), true);
                  		}
                  	});
                  }
                  
                  // after that the state is created
                  function start() {
                  	// poll every 10 seconds the state
                  	schedule('*/10 * * * * *'/* every 10 seconds */, function () {
                  		pollValue();
                  	});
                  	// or just  
                  	// setInterval(pollValue, 10000);
                  
                  	// subscribe to detect control actions
                  	on({id: 'blackBox', change: 'any'}, function (obj) {
                  		if (!obj.state.ack) {
                  			setBlackBox(obj.state.val);
                  		}
                  	});
                  }
                  // simple way to create 
                  createState('blackBox', start);
                  
                  // OR 
                  // createState(
                  // 		'blackBox', 				// ID of variable. In this case ID will be javascript.0.blackBox 
                  //		false, 						// Initial value
                  //		false, 						// Force creation, even if exist (to overwrite description)
                  //		{
                  //			name: 'My black box', 	// Full text name of variable
                  //			type: 'boolean', 		// type of variable: number, string, boolean, array, object, mixed, file
                  //			role: 'switch'			// you can see possible roles here https://github.com/ioBroker/ioBroker/blob/master/doc/SCHEMA.md#state-commonrole
                  //		}, 
                  //		null, 	// you can define here user specific object
                  //		start); // go after creation
                  
                  1 Antwort Letzte Antwort
                  0
                  • V Offline
                    V Offline
                    vtec
                    schrieb am zuletzt editiert von
                    #10

                    А не проще?

                    exec - execute some OS command, like "cp file1 file2"
                    exec (cmd, callback)
                    

                    Пример:

                    exec ('/home/smarthome/scripts/com_port.php');

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      andrey99986
                      schrieb am zuletzt editiert von
                      #11

                      @vtec:

                      А не проще?

                      exec - execute some OS command, like "cp file1 file2"
                      exec (cmd, callback)
                      

                      Пример:

                      exec ('/home/smarthome/scripts/com_port.php'); `

                      Отлично! Этот вариант работает.

                      Следующий вопрос - зная как включать-выключать устройство через вызов внешней программы - как создать устройство

                      чтобы его можно было подключить в vis-е к элементу "Bulb on/off"?

                      1 Antwort Letzte Antwort
                      0
                      • BluefoxB Offline
                        BluefoxB Offline
                        Bluefox
                        schrieb am zuletzt editiert von
                        #12

                        @andrey99986:

                        @vtec:

                        А не проще?

                        exec - execute some OS command, like "cp file1 file2"
                        exec (cmd, callback)
                        

                        Пример:

                        exec ('/home/smarthome/scripts/com_port.php'); `

                        Отлично! Этот вариант работает.

                        Следующий вопрос - зная как включать-выключать устройство через вызов внешней программы - как создать устройство

                        чтобы его можно было подключить в vis-е к элементу "Bulb on/off"? `
                        Я же написал. Тебе только надо подправить функцию setBlackBox и выбросить поллинг

                        // function for control blackbox
                        function setBlackBox(value) {
                           exec ('/home/smarthome/scripts/com_port.php');
                        }
                        
                        // after that the state is created
                        function start() { 
                           // subscribe to detect control actions
                           on({id: 'blackBox', change: 'any'}, function (obj) {
                              if (!obj.state.ack) {
                                 setBlackBox(obj.state.val);
                              }
                           });
                        }
                        // simple way to create 
                        createState('blackBox', start);
                        
                        
                        1 Antwort Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          andrey99986
                          schrieb am zuletzt editiert von
                          #13

                          Простой вызов exec отрабатывается, скрипт запускается (без функций и логики).

                          К элементу bulb назначил javascript.0.gsm7_1. В vis-e при клике статус меняется, но скрипты не запускаются.

                          Код:

                          function set_gsm_7_1_Off(value) {
                             exec ('/usr/bin/php -f /var/www/scripts/roz.php 1 0');
                          }
                          function set_gsm_7_1_On(value) {
                             exec ('/usr/bin/php -f /var/www/scripts/roz.php 1 1');
                          }
                          // after that the state is created
                          function start() { 
                           //   subscribe to detect control actions
                             on({id: 'gsm7_1', change: 'any'}, function (obj) {
                                if (obj.state.ack === true) {
                                   set_gsm_7_1_On(obj.state.val);
                                }
                                if (obj.state.ack === false) {
                                   set_gsm_7_1_Off(obj.state.val);
                                }
                             });
                          }
                          // simple way to create 
                          createState('gsm7_1', start);
                          
                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            andrey99986
                            schrieb am zuletzt editiert von
                            #14

                            Рабочий код:

                            function set_gsm_7_1(value) {
                                if (value === true) {
                                    exec ('/usr/bin/php -f /var/www/scripts/roz.php 1 1');
                                }
                                if (value === false) {
                                    exec ('/usr/bin/php -f /var/www/scripts/roz.php 1 0');
                                }
                            }
                            
                            // after that the state is created
                            function start() { 
                             //   subscribe to detect control actions
                               on({id: 'gsm7_1', change: 'any'}, function (obj) {
                                  if (!obj.state.ack ) {
                                      console.log('Val: ' + obj.state.val);
                                     set_gsm_7_1(obj.state.val);
                                  }
                            
                               });
                            }
                            // simple way to create 
                            createState('gsm7_1', start);
                            
                            1 Antwort Letzte Antwort
                            0

                            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                            Registrieren Anmelden
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            388

                            Online

                            32.7k

                            Benutzer

                            82.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