The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Снятие показаний электросчетчика ср..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для контроля за появлением новых сообщений - перед выходом жмите "Пометить прочитанным".
"Раздел полезных советов: Снятие показаний электросчетчика ср..." +/
Сообщение от auto_tips (?), 22-Сен-16, 21:52 
Предупреждение: все что вы делаете на свой страх и риск, так как существует вероятность «окирпичивания» Вашего роутера.

Итак, берем роутер TP-LINK TL-WR842ND с прошивкой OpenWrt (на момент написания статьи автор использовал версию CHAOS CALMER 15.05, r46767) По начальной настройке роутера c OpenWrt информации в сети много. (Пример тому [[https://youtu.be/mVbtmjwkpgE толковый ролик]] Дмитрия Бачило). В OpenWrt должeн установлен пакет bc.

Создаем директорию: /usr/local/power, где будут хранится данные нашей программы: в файле /usr/local/power/v220 - показания электросчетчика, в файле /usr/local/power/watts - потребляемая мощность.

Заменяем файл /etc/rc.button/reset на следующее содержание:

   #!/bin/sh
   POWER_LED=/sys/devices/platform/leds-gpio/leds/tp-link:green:system/brightness
   . /lib/functions.sh
   if [ "${ACTION}" = "released" ]
   then
      echo 0 > $POWER_LED
      cat $POWER_LED > /usr/local/power/switch
   else
      echo 1 > $POWER_LED
      cat $POWER_LED > /usr/local/power/switch
   fi
   return 0

Разбирам роутер, выводим контакты с кнопки reset и подключаем к телеметрическому выходу электросчетчика. Если электросчетчик опламбирован, то подключаем роутер через фоторезистор к светодиоду счетчика. (Тогда в файле /usr/local/power/switch делаем замену echo 0 на echo 1 в шестой строке и echo 1 на echo 0 в девятой строке).

Теперь при нажатии (подачи КЗ) кнопки reset будет гореть индикатор "SYS", и в файле /usr/local/power/switch будет "1". При отжатии кнопки (снятии КЗ) соответствено гаснет "SYS" и в файле /usr/local/power/switch будет "0".

Создаем файл /usr/local/power/my_power.sh c правом исполнения.

В файле my_power.sh редактируем константу MERCURY в зависимости от электосчетчика (32 стоит по умолчанию, работал со счетчиком "Меркурий 201.5", где передаточное число, 3200 имп/кВт*ч) то есть сотая часть значения передаточного числа.

содержание файла my_power.sh:

   #!/bin/sh
   SWITCH=/usr/local/power/switch
   MERCURY=32;
   COUNT=0;
   BLACK_COUNT=0;
   let START_TIME=`date +%s`
   read POWER < /usr/local/power/v220 ;
   while true
   do
      read pressed < $SWITCH
      if [ "$pressed" = "1" ] ;
      then
      
         if [ "$BLACK_COUNT" = "0" ] ;
         then
            let POWER_OFF=0
            let BLACK_COUNT=BLACK_COUNT+1
            let COUNT=COUNT+1
            if [ "$COUNT" = "$MERCURY" ] ;
            then
               let END_TIME=`date +%s`
               let DELTA=$(($END_TIME-$START_TIME))
               let WATTS=$((3600/$DELTA))
               printf "%g" "$(echo "scale=3; $WATTS/100"|bc )" >  /usr/local/power/watts
               let COUNT=0
               POWER=$(echo "scale=2; $POWER+0.01" | bc)

               let START_TIME=$END_TIME
               printf "%g" "$(echo "$POWER" )" > /usr/local/power/v220 ;
            fi
         fi
      fi
      if [ "$pressed" = "0" ];
      then
         let BLACK_COUNT=0
      fi
   done


И запускаем командой:

   /usr/local/power/my_power.sh &


URL: http://ru251.tk/
Обсуждается: https://www.opennet.ru/tips/info/2990.shtml

Ответить | Правка | Cообщить модератору

Оглавление
Раздел полезных советов: Снятие показаний электросчетчика ср..., auto_tips, 22-Сен-16, 21:52  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру