1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 1

Получение данные из EPsolar Tracer в ПАК Малина-2

Тема в разделе "Возобновляемые источники электроэнергии", создана пользователем bdna2009, 04.06.18.

  1. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Получение данные из EPsolar Tracer в ПАК Малина-2
    Есть инвертор МАП. Но нет солнечных контролеров этой же фирмы ("МА"). Зато есть контролеры Epsolar.
    И есть приличная программка для сбора статистики той-же фирмы "МА", которая естественно работает только со своим железом. Очень хотелось передавать информацию с Epsolar в эту программу.
    Что из этого получилось, можно посмотреть на видео.


    Но на этом история не закончилась. Два десятка устройств нашли своих пользователей. А следом вышла "версия два" данного устройства.
     
  2. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    "Версия два" - это законченное устройство, в корпусе на din-рейку. Имеет встроенный переходник uart-USB, а также два выхода на подключение внешних устройств. Выходы управляются с помощью той же программы малина-2, которая собирает статистику. В общем получилось вот так:
    4.jpg 5.jpg
    Это промежуточный вариант. Имеет встроенный переходник uart-usb (чип CP2102)
    и один выход на внешнее управление.

    Окончательный вариант вот такой:
    1.jpg 2.jpg 3.jpg

    Два выхода на внешнее управление и USB переходник на чипе PL2303 - отличный чип, между прочим.

    так это выглядит на din-рейке:
    10.jpg

    Таким образом получилось собирать данные с Epsolar даже если нет ни одного "родного" устройства фирмы МА. А так как "малина-2" умеет еще и отдавать нужные данные по внешним запросам, удалось эти данные транслировать дальше в другие системы: domoticz, majordomo, emonpi и т. п. практически в любую которая работает с MQTT или json запросами.
    Примеры скриптов для передачи данных будут представлены чуть позже.
     

    Вложения:

    • 4.jpg
    • 5.jpg
  3. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Малина-2 теперь умеет получать и хранить данные с Epsolara, показывать по ним статистику строить графики. Но так же есть возможность отправлять данные дальше, в другие системы для показа или сбора статистики. Например в различные "умные дома", например majordomo, domoticz (и далее в grafana например), в локальное облако emonpi (локальная версия emoncms. org) и т. п.

    Сделать это несложно (спасибо Osolemio, задал правильное направление).
    Предположим есть еще одна rasPi или что-то другое с установленным python. Python, как правило по умолчанию входит в большинство сборок для rasPi поэтому рассмотрим скрипт на базе питона.
    И так скрипт должен:
    1. запросить и получить у малина-2 данные
    2. взять нужное из полученного и подготовить к отправке дальше
    3. собственно отправить дальше.

    Запросы к малине довольно просты и имеют такой вид:
    http://малина_IP/read_json.php?device=map
    http://малина_IP/read_json.php?device=mppt
    http://малина_IP/read_json.php?device=bat
    Соответственно получаем данные по МАПу, МППТ, или Батарейному монитору.
    Запросы можно посылать из обычного браузера и там же смотреть ответы.
    Ответы примерно такие:
    [
    {"timestamp":"1527845203","time":"12:26:43","UID":"130","Vc_PV":"35.8","Ic_PV":"8.0","V_Bat":"14.0","P_PV":"288","P_Out":"288","P_Load":"0","P_curr":"288","I_Ch":"20.6","I_Out":"20.6","Temp_Int":"30","Temp_Bat":"20","Pwr_kW":"0.720","Sign_C0":"0","Sign_C1":"1","I_EXTS0":"0","I_EXTS1":"0","P_EXTS0":"0","P_EXTS1":"0","Relay_C":"0","RSErrSis":"0","Mode":"F","Sign":"l","MPP":"t","windspeed":"65535","FW":"6.5","R1":"0","R2":"0","R3":"0"},{"timestamp":"1527845204","time":"12:26:44","UID":"160","Vc_PV":"42.5","Ic_PV":"2.0","V_Bat":"13.8","P_PV":"86","P_Out":"86","P_Load":"0","P_curr":"86","I_Ch":"6.3","I_Out":"6.3","Temp_Int":"27","Temp_Bat":"20","Pwr_kW":"0.760","Sign_C0":"0","Sign_C1":"1","I_EXTS0":"0","I_EXTS1":"0","P_EXTS0":"0","P_EXTS1":"0","Relay_C":"1","RSErrSis":"0","Mode":"F","Sign":"l","MPP":"t","windspeed":"65535","FW":"6.5","R1":"1","R2":"0","R3":"0"},{"timestamp":"1527845206","time":"12:26:46","UID":"230","Vc_PV":"41.8","Ic_PV":"2.0","V_Bat":"13.8","P_PV":"83","P_Out":"83","P_Load":"0","P_curr":"83","I_Ch":"6.0","I_Out":"6.0","Temp_Int":"26","Temp_Bat":"21","Pwr_kW":"0.320","Sign_C0":"0","Sign_C1":"1","I_EXTS0":"0","I_EXTS1":"0","P_EXTS0":"0","P_EXTS1":"0","Relay_C":"0","RSErrSis":"0","Mode":"F","Sign":"l","MPP":"t","windspeed":"65535","FW":"6.5","R1":"0","R2":"0","R3":"0"}
    ]

    Подробно про это тут
    Рассмотрим пример скрипта.
    Начало:
    Код:
    # подключаем библиотеки
    import httplib
    import urllib
    import json
    import os
    
    #формируем переменные для запроса
    malina = httplib.HTTPConnection("192.168.49.36")
    malina.request("GET", "/read_json.php?device=mppt")
    
    #выполняем запрос
    response = malina.getresponse()
    data = response.read()
    arr = json.loads(data)
    
    Здесь 192.168.49.36 - ip адрес малина-2
    device=mppt - запрашиваем данные по МППТ
    соответвенно:
    malina. request("GET", "/read_json.php?device=bat") для батарейного монитора
    malina..request("GET", "/read_json.php?device=map") для МАПа

    после выполнения этого кода в массиве arr будут полученные данные из МППТ.
    Причем, в зависимости от того откуда запрашиваем данные:
    - для map это будет одномерный массив
    - для bat двухмерный.
    - для mppt "мерность" массива будет равна кол-ву подключенных к малине МППТ.

    Например напряжение батареи по данным МППТ-1 хранится тут: arr[0]['V_Bat']
    Мощность солнечных панелей по МППТ-2 тут: arr[1]['P_PV']
    А энергия сети из МАПа: arr['_E_NET'] (одномерный массив)

    Далее нужно взять только нужные данные из всего полученного, и отправить их по назначению. Для простоты понимания, сделаем это через переменные. Данные будем посылать от трех МППТ подключенных к малине в систему emonpi
    продолжение крипта:
    Код:
    for n in range(3):
        v_bat = arr[n]['V_Bat'] 
        p_pv = arr[n]['P_PV']
        vc_pv = arr[n]['Vc_PV']   
    
        runcom = "curl --data \"node="+str(n)+"&data={"
        runcom = runcom+"V_bat:"+v_bat+","
        runcom = runcom+"P_pv:"+p_pv+","
        runcom = runcom+"Vc_PV:"+vc_pv+"}"
        runcom = runcom+"&apikey=105df69d2669dcc3aa88ad4849f81c07\" \"localhost/emoncms/input/post\""
    
        os.system(runcom)
       
    
    В данном примере цикл выполняется три раза, для каждого МППТ. Каждый раз берутся три параметра (напряжение батареи, мощность панелей, напряжение панелей), формируем из них "командную строку" вида:

    curl -data "node=1&data{V_bat:14,P_pv:288,Vc_PV:35.8}&apikey=105df69d2669dcc3aa88ad4849f81c07" "localhost/emoncms/input/post"

    и с помощью команды os. system (runcom) сформированная "командная строка" выполняется и посылает данные в node 1, 2 или 3 в emonpi, расположенный на этом же rasPi (localhost)

    Собирая нужные "командные строки" можно посылать данные куда нужно.
    например domoticz:
    "curl '192.168.1.17:8080/json.htmtype=command&param=udevice&idx=28&svalue="+v_bat+"'"
    или через MQTT
    " mosquitto_pub -h 192.168.1.37 -t 'domoticz/in' -m '{ "idx": 3, "nvalue": 0, "svalue": "22"}' "

    и т. п.

    Осталось только запускать наш скрипт с нужной периодичностью, любым удобным способом.

    Выяснить какая переменная в массиве что хранит (например ['V_Bat']), проще всего запустив в браузере нужный запрос (один из трех указанных в начале) и посмотреть ответ.
     
  4. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Немножко "бантиков". Скрипт наш, делаем что хотим. Добавим еще несколько передаваемых параметров и посчитаем, среднее напряжение батарей, получаемое от каждого МППТ и сумму мощностей панелей, сумму тока, сумму дневной выработки и отправим суммы в ноду 4.
    Код:
    import httplib
    import urllib
    import json
    import os
    
    malina = httplib.HTTPConnection("192.168.49.36")
    malina.request("GET", "/read_json.php?device=mppt")
    response = malina.getresponse()
    data = response.read()
    arr = json.loads(data)
    
    V_Bat_avr = 0
    P_PV_sum = 0
    I_Ch_sum = 0
    Pwr_kW_sum = 0
    
    for n in range(3):
        vbat = arr[n]['V_Bat']
    
        V_Bat_avr = V_Bat_avr + float(vbat)
        P_PV_sum = P_PV_sum + float(arr[n]['P_PV'])
        I_Ch_sum = I_Ch_sum + float(arr[n]['I_Ch'])
        Pwr_kW_sum  = Pwr_kW_sum + float(arr[n]['Pwr_kW'])
      
        runcom = "curl --data \"node="+str(n+1)+"&data={"
        runcom = runcom+"time:"+arr[n]['time']+","
        runcom = runcom+"UID:"+arr[n]['UID']+","
        runcom = runcom+"Vc_PV:"+arr[n]['Vc_PV']+","
        runcom = runcom+"Ic_PV:"+arr[n]['Ic_PV']+","
        runcom = runcom+"V_Bat:"+vbat+","
        runcom = runcom+"P_pv:"+arr[n]['P_PV']+","
        runcom = runcom+"I_Ch:"+arr[n]['I_Ch']+","
        runcom = runcom+"Temp_Int:"+arr[n]['Temp_Int']+","
        runcom = runcom+"Temp_Bat:"+arr[n]['Temp_Bat']+","
        runcom = runcom+"Pwr_kW:"+arr[n]['Pwr_kW']+"}&apikey=105df69d2669dcc3aa88ad4849f81c07\" \"localhost/emoncms/input/post\""
        os.system(runcom)
    
    V_Bat_avr = V_Bat_avr / 3  
    runcom = "curl --data \"node=4&data={V_Bat_avr:"+str(V_Bat_avr)+",P_PV_sum:"+str(P_PV_sum)+",I_Ch_sum:"+str(I_Ch_sum)+",Pwr_kW_sum:"+str(Pwr_kW_sum)
    runcom = runcom+"}&apikey=105df69d2669dcc3aa88ad4849f81c07\" \"localhost/emoncms/input/post\""
    os.system(runcom)
    на что стоит обратить внимание при выполнении арифметических операций:
    - данные приходят от малины в виде "текста"
    - для сложение, деления и т. п. их нужно сначала превратить в "числа". с помощью функций int() или float()
    - перед отправкой по новому адресу, полученное значение нужно снова превратить в "текст" с помощью функции str()
     
  5. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Eще один пример скрипта, на этот раз в Majordomo используя MQTT и несколько картинок с результатами.
    Код:
    import httplib
    import urllib
    import json
    import os
    
    conn = httplib.HTTPConnection("192.168.1.46")  # ip malina-2
    mqtthost = "mosquitto_pub -h 192.168.1.17 -t 'malina' -m"
    
    #start request mppt
    conn.request("GET", "/read_json.php?device=mppt")
    response = conn.getresponse()
    data = response.read()
    mppt = json.loads(data)
    #start request bat
    conn.request("GET", "/read_json.php?device=bat")
    response = conn.getresponse()
    data = response.read()
    bat = json.loads(data)
    #start request map
    conn.request("GET", "/read_json.php?device=map")
    response = conn.getresponse()
    data = response.read()
    map = json.loads(data)
    #end request
    
    
    #mppt
    res = mppt[0]['V_Bat']
    runcom =  mqtthost+" '{\"U_bat\":"+res+","
    
    res = int(mppt[0]['P_curr']) + int(mppt[1]['P_curr'])
    runcom = runcom + "\"Psolar_ALL\":"+str(res)+","
    
    res = mppt[0]['P_curr']
    runcom = runcom + "\"P_poli\":"+res+","
    
    res = mppt[1]['P_curr']
    runcom = runcom + "\"P_mono\":"+res+","
    
    k0 = round(float(mppt[0]['Pwr_kW']),1)
    runcom = runcom + "\"kWh_poli\":"+str(k0)+","
    
    k1 = round(float(mppt[1]['Pwr_kW']),1)
    runcom = runcom + "\"kWh_mono\":"+str(k1)+","
    runcom = runcom + "\"kWh_All\":"+str(round((k0+k1),1))+","
    
    #bat
    res = round(float(bat[1]['Isumm']),1)
    runcom = runcom + "\"Isumm\":"+str(res)+"}'"
    
    #print runcom
    os.system(runcom)
    

    и немножко картинок, из разных систем, куда отправляются данные.
    1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 1585.jpg

    PS.
    конструкция
    conn. request("GET", "/read_json.php?device=map")
    response = conn. getresponse()
    data = response. read()
    map = json. loads (data)
    на самом деле содержит полный ответ в переменной data и разобранный по ячейкам масива, в данном случае масcив map

    {"timestamp":"1528536203","time":"12:23:23","_UID":"0","_MODE":"13","_Status_Char":"0","_Uacc":"26.5","_Uch_T":"27.3","_Ubuf_T":"27.1","_Iacc":"12","_PLoad":"-300","_PLoad_calc":"-334.6","_F_Acc_Over":"0","_F_Net_Over":"0","_UNET":"234","_INET":"0","_PNET":"0","_PNET_calc":"43.9","_TFNET":"50.0","_ThFMAP":"50.0","_UOUTmed":"227","_TFNET_Limit":"19.8","_UNET_Limit":"170","_RSErrSis":"0","_RSErrJobM":"0","_RSErrJob":"0","_RSWarning":"0","_Temp_Grad0":"23","_Temp_Grad2":"40","_INET_16_4":"0.2","_IAcc_med_A_u16":"-12.6","Temp_off":"18","_E_NET":"53004","_E_ACC":"44880","_E_ACC_CHARGE":"25581","_E_NET_SIGN":"52720","_Inet_flag":"0","_I_acc_avg":"0.0","_I_mppt_avg":"0.0","_I2C_Err":"0","_Temp_Grad1":"20","_Relay1":"0","_Relay2":"0","_Flag_ECO":"0","_RSErrDop":"0","_flagUnet2":"2","_CoolerSpeed":"1","_MPPTs_mode":"0","_I_acc_3ph":"-6496.4","_I_ph1":"13.0","_I_ph2":"-3257.8","_I_ph3":"-3251.6","fw":"25.7"}

    Если нужно отправить все полученные данные, то не стоит их разбирать и собирать заново. можно отправить всю data
    runcom = mqtthost+" '"+data+"'"
     
    Последнее редактирование: 09.06.18
  6. vagorzel
    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917

    vagorzel

    Живу здесь

    vagorzel

    Живу здесь

    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917
    Адрес:
    Клин, Зеленоград
    Пользуясь случаем, еще раз выражаю огромное спасибо Дмитрию @bdna2009, за неоценимую помощь в подключении моих контроллеров EPSolar iTracer к малине2 и передаче данных с них на свой сервер emonсms, называется он emonpi (собран на raspberry pi2 или pi3, но вроде пишут, что ставится и на более ранних).
    Причины, почему я перешел на собственное "облако":
    1. Сервис emoncms. org с 1 июля становится платным, причем плата пропорционально зависит от количества полей.
    2. У меня белый IP
    3. У меня нет МАПа, а значит я лишен батарейного монитора и всех его "вкусностей" по обработке данных с нескольких контроллеров и других полезных обработанных данных с других устройств.
    4. В облаке от МАПА, демо, которое показано недавно в теме по малине2, не предусмотрено (надеюсь, что только пока) никаких обработок данных (например от нескольких устройств, усреднений сумм и т. д.), поэтому в моем случае на это облако надеяться практически не приходится (придется все данные с контроллеров, а их у меня три, складывать в уме, смотря на картинки. Конечно можно это предварительно сделать и в скрипте, который приводит Дмитрий, но это на любителя, мне показалось проще (да и к дашборду от emoncms я уже прикипел) собрать свое облако.
    Я взял готовый образ
    emonSD-26Oct17
    и закатал его на карточку.
    Есть несколько моментов, на которые я хочу заострить внимание, чтобы те, кто тоже это будет делать, не наступали на мои грабли.
    Итак:
    1. После первого запуска rashberry с emonpi нужно обязательно подождать не менее 10 минут и ничего не делать с системой, идет обновление.
    2. После этого зайти по ssh (pi, emonpi2016), набрать raspi-config и сделать русскую локаль и выбрать из языков только английский (en_GB UTF8) и русский (ru_RU UTF8)
    3. Не пользоваться расширением системы на всю флешку встроенными средствами (да она и не сработает, так как в системе не одна партиция линукс, а две), только специальной утилитой, набрав
    sudo emonSDexpand и смиренно ждать примерно 20 минут, пока rasbberry не выключится. В это время ничего не нужно делать с системой, просто ждать.
    4. Теперь самое интересное. Я столкнулся с тем, что в дашборде не сохраняются русские символы. Оказалось, что в базе данных по умолчанию кодировка latin1, почему это так сделали непонятно, но так есть.
    Нужно в базе установить кодировку utf8, мне помогли это сделать, вот я записал, все, что нужно сделать:
    pi@emonpi (ro):~$ locale
    LANG=ru_RU.UTF-8
    LANGUAGE=
    LC_CTYPE="ru_RU.UTF-8"
    LC_NUMERIC="ru_RU.UTF-8"
    LC_TIME="ru_RU.UTF-8"
    LC_COLLATE="ru_RU.UTF-8"
    LC_MONETARY="ru_RU.UTF-8"
    LC_MESSAGES="ru_RU.UTF-8"
    LC_PAPER="ru_RU.UTF-8"
    LC_NAME="ru_RU.UTF-8"
    LC_ADDRESS="ru_RU.UTF-8"
    LC_TELEPHONE="ru_RU.UTF-8"
    LC_MEASUREMENT="ru_RU.UTF-8"
    LC_IDENTIFICATION="ru_RU.UTF-8"
    LC_ALL=
    pi@emonpi (ro):~$ mysql -u root -p
    Enter password: (тут вводим (пароль не отражается): emonpimysql2016)
    Welcome to the MySQL monitor. Commands end with; or \g.
    Your MySQL connection id is 62820
    Server version: 5.5.57-0+deb8u1 (Raspbian)

    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "emoncms";
    +-+
    | default_character_set_name |
    +-+
    | latin1 |
    +-+
    1 row in set (0.00 sec)

    mysql> ALTER DATABASE emoncms CHARACTER SET utf8;
    Query OK, 1 row affected (0.00 sec)

    mysql> use emoncms;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> show tables;
    +-+
    | Tables_in_emoncms |
    +-+
    | app_config |
    | dashboard |
    | feeds |
    | graph |
    | input |
    | multigraph |
    | rememberme |
    | schedule |
    | setup |
    | sync |
    | users |
    +-+
    11 rows in set (0.00 sec)

    mysql> ALTER TABLE app_config CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.02 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE dashboard CONVERT TO CHARACTER SET utf8;
    Query OK, 2 rows affected (0.13 sec)
    Records: 2 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE feeds CONVERT TO CHARACTER SET utf8;
    Query OK, 71 rows affected (0.02 sec)
    Records: 71 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE graph CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.06 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE input CONVERT TO CHARACTER SET utf8;
    Query OK, 34 rows affected (0.02 sec)
    Records: 34 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE multigraph CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.02 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE rememberme CONVERT TO CHARACTER SET utf8;
    Query OK, 4 rows affected (0.07 sec)
    Records: 4 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE schedule CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.02 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE setup CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.06 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE sync CONVERT TO CHARACTER SET utf8;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> ALTER TABLE users CONVERT TO CHARACTER SET utf8;
    Query OK, 1 row affected (0.06 sec)
    Records: 1 Duplicates: 0 Warnings: 0

    mysql> Bye
    pi@emonpi (ro):~$
    После этого все работает с русскими символами без приключений.
    Для надежности стоит систему перенести на внешний жесткий диск или ssd.
    p. s.
    Вот картинка сейчас с этого "домашнего" сервера, правда на русский еще практически ничего, кроме слова Экономия, не правил и не вводил надписей на русском.
    Можно спокойно отключаться от сервера emoncms. org
    emonpi.jpg
     
    Последнее редактирование: 09.06.18
  7. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Осталось два переходника на din рейку с управлением внешними реле. Больше делать не планируется.
    кому еще нужно, пишите в личку.
     
  8. vagorzel
    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917

    vagorzel

    Живу здесь

    vagorzel

    Живу здесь

    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917
    Адрес:
    Клин, Зеленоград
    Интересно для тех, у кого есть прямой IP и есть желание сделать свое "облако" для статистики.
    Появился новый образ
    emonSD-13Jun18 (Beta)
    Поставил его, через встроенный backup все отлично перенеслось с прежней версии (описывал выше) на новый emonpi, ничего (по языку) дорабатывать не нужно, с русским сразу все отлично. Новый образ собран на последней версии
    • Raspbian Stretch
    • Compatible with RasPi 3B+ (and backward compatible with older RasPi)
    Судя по описанию, в последних образах emonpi уже есть поддержка https, но, учитывая, что @Osolemio не планирует сделать возможным из малины направлять данные на свое "облако" emonsms (emonpi), можно попробовать воспользоваться или dns proxy (как он советует) или скриптом от @bdna2009 (мне, к примеру, именно так показалось сделать гораздо проще).
     
  9. Igtrade
    Регистрация:
    26.04.12
    Сообщения:
    4
    Благодарности:
    0

    Igtrade

    Новичок

    Igtrade

    Новичок

    Регистрация:
    26.04.12
    Сообщения:
    4
    Благодарности:
    0
    Добрый вечер. Не могли бы Вы на пальцах для несведущего объяснить как с малина-2 отправить в domoticz данные по напряжению сети на входе МАП?
     
  10. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    Силами самой малины-2 никак. В том смысле что нет к ней официального доступа на уровне шела, чтобы скрипт свой в ней сохранить и запускать. Поэтому спросить нужные данные можно только со стороны домотикса.
    Если Домотикс стоит на распберри, то скрипт пишется например на питоне и запускается с некой периодичностью. Или на любом другом поддерживаемомо языке. Теоретиечски можно даэе сам скрипт непосредственно в домотиксе написать, на встроенном туда языке (не помню как он там называется). Если Домотикс развернут на винде, то мне кажется самый простой вариант это второй (встроенный язык).
    Сам скрипт расписан в примере поста номер 3
    т. е. запрашиваем сначала данные из малины
    указав ip Вашей малины и заменив строку запроса на
    malina. request("GET", "/read_json.php?device=map") #для МАПа

    далее вынимаем нужный параметр в переменную

    и отправляем его в домотикс примерно так:
    "curl '192.168.1.17:8080/json.htmtype=command&param=udevice&idx=28&svalue="+v_bat+"'"
    заменив тут ip на ip домотикса (или localhost) и idx = 28 поменять на idx вашего устройства в домотиксе, в которое посылаете данные.

    т. е. скрипт примерно такой:

    # подключаем библиотеки
    import httplib
    import urllib
    import json
    import os

    #формируем переменные для запроса
    malina = httplib. HTTPConnection("192.168.49.36") # ip malina-2
    malina. request("GET", "/read_json.php?device=map") #для МАПа

    #выполняем запрос
    response = malina. getresponse()
    data = response. read()
    arr = json. loads (data)

    #вынимаем напряжение сети
    U_net = arr['_UNET']

    #формирем командную строку
    runcom = "curl '192.168.1.17:8080/json.htmtype=command&param=udevice&idx=28&svalue="+U_net+"'"

    #выполняем
    os. system (runcom)

    Скрипт примерный, не проверенный. Домотикса давно нет, поэтому проверить не на чем.
     
  11. Rampo
    Регистрация:
    12.08.13
    Сообщения:
    742
    Благодарности:
    664

    Rampo

    Живу здесь

    Rampo

    Живу здесь

    Регистрация:
    12.08.13
    Сообщения:
    742
    Благодарности:
    664
    Адрес:
    Khabarovsk, Russia
    Подскажите, может найдется у кого лишний комплект данного оборудования? Продайте пожалуйста, заранее спасибо!
     
  12. Nick5453
    Регистрация:
    15.12.18
    Сообщения:
    49
    Благодарности:
    1

    Nick5453

    Участник

    Nick5453

    Участник

    Регистрация:
    15.12.18
    Сообщения:
    49
    Благодарности:
    1
    @vagorzel, все скачал по Вашим ссылкам. Развернуть на microSD получилось только Win32 Disk Imager'ом.
    Recommended method: Flash using Etcher tool. Туль работать на W8 отказался.
    Получил Raspberry Pi 3 с локальным облаком emonpi.
    достучался до этого облака из W8...
    upload_2019-1-9_5-10-58.png
    Дальше ковырять - нет стал, т. к. искал немного другое решение.

    С Линуксами на ВЫ. Отсюда вопрос:
    На самой Raspberry с emonpi можно поднять интерфейс emoncms и ни куда не ходить?
    Прикрутить к Raspberry монитор, клавиатуру, мышь... отлучить от и-нета и оставить её вариться в собственном соку, собранную в одну сетку с Малинами от Osolemio?.
     
  13. vagorzel
    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917

    vagorzel

    Живу здесь

    vagorzel

    Живу здесь

    Регистрация:
    19.05.15
    Сообщения:
    3.644
    Благодарности:
    2.917
    Адрес:
    Клин, Зеленоград
    @Nick5453, если не работали раньше с облаком emoncms. org и у вас все оборудование МАП Энергия, то непонятно, зачем вам стороннее облако, если в теме малинки2 есть свое "родное" облако, которое, вероятно, еще долго будет поддерживаться и совершенствоваться. Тем более, что автор старается учесть те пожелания пользователей, которые не нарушают политику безопасности облака.
    Другое дело для тех, кого полностью устраивал сервис enomcms и они его немного освоили и привыкли, но с введением оплаты за каждую строку данных жаба давит отдавать "кровные". Или есть оборудование не от МАП Энергия и нужно собирать данные в единое облако (например, у меня вообще нет оборудования МАП, я малину2 использую совместно с другим адаптером от @bdna2009 только для преобразований данных от моих солнечных контроллеров и передачи их в "свое" облако, так как некоторые данные я не могу направить в малину2 и, соответственно, в облако малины2).
    Вот в этом случае имеет смысл перейти на свое облако emonpi (на raspberry pi2 (3), интерфейс полностью совпадает, а возможностей (по моему мнению) даже больше, чем на платном облаке. К примеру, в emonpi реализован прием данных по mqtt (встроен брокер и клиент mqtt и все это настроено под emonpi), то есть любые устройства, которые умеют передавать данные по mqtt, вы легко прицепите к своему облаку и сможете с ними делать что угодно (строить графики, рисовать дашборды, иметь информацию на своем смартфоне или планшете (в emonpi есть для этого приложение App) в любом месте, где доступен интернет).
    Вопрос непонятен, в emonpi все это есть, только зачем приделывать туда монитор и клавиатуру с мышкой, заходите по вэб с любого устройства в доме и все это имеете. Или до меня не дошел смысл вопроса.
    В emoncms (emonpi) нет готовых дашбордов, вы сами строите с помощью встроенных инструментов картинки, графики, окошки и т. п.
    Поэтому с этим облаком нужно немного разобраться, поэкспериментировать. Если не пробовали или не готовы к экспериментам, то я не вижу смысла переходить вам с родного МАП-овского облака на что-то другое. Там уже все готово для оборудования МАП.
     
  14. Nick5453
    Регистрация:
    15.12.18
    Сообщения:
    49
    Благодарности:
    1

    Nick5453

    Участник

    Nick5453

    Участник

    Регистрация:
    15.12.18
    Сообщения:
    49
    Благодарности:
    1
    @vagorzel,
    C облаком emoncms. org раньше не работал.
    Да, все оборудование МАП Энергия. Стороннего оборудования нет.
    В .. малинки есть свое "родное" облако в которое я с удовольствием смотрю, но нужна картинка "на месте"
    Нет любого устройства, не откуда заходить.
    Отсюда желание - Малины от оборудования МАП Энергия шлют инфу в Облако МикроАрт, а локально на Raspberry PI 3 с emonpi поднять на 127.0.0.1 дашбоард и рисовать с помощью встроенных инструментов картинки, графики, окошки и т. п. без внешнего трафика. И, скорее всего, без клавиатуры и мышИ.
     
  15. bdna2009
    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90

    bdna2009

    Живу здесь

    bdna2009

    Живу здесь

    Регистрация:
    20.09.16
    Сообщения:
    204
    Благодарности:
    90
    @Nick5453, у Вас несколько вариантов видится:
    1. поставить на raspberry "родную ОС" типа расбиан. (по сути линукс) и пользоваться установленным там браузером для подключения к малина-2. смотреть на ней статистику и графики, которые есть в самой малине-2. Если конечно этой информации достаточно.

    2. на raspberry с установленным emonpi поднять X (графическую оболочку) установить браузер, который любимый и далее смотреть что нужно: малину-2 или emonpi-localhost

    3. еще одна отдельная raspberry с расбиан чисто для просмотра малину-2 либо emonpi

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

    4 вариант. любой бюджетный планшет с браузером и wifi.