Страница 2 из 2

Re: Поддержка Python в Majordomo

Добавлено: Вт мар 24, 2020 3:10 pm
savenko_egor
PR в альфу, а ты в мастер отправил.

Re: Поддержка Python в Majordomo

Добавлено: Вт мар 24, 2020 3:30 pm
artek

Re: Поддержка Python в Majordomo

Добавлено: Чт окт 08, 2020 2:31 pm
Gastello007
В теле функции не получается получить или изменить значение выдает ошибку компилятора

Код: Выделить всё

def yuser (us):
    a=int(user.get(us))
    if a==1:
       mjdm.sg("Zokalo.TEST",1)
       b = ( us +" Home")
    else:
       mjdm.sg("Zokalo.TEST",0)
       b= ( us +" Not Home")
    return b

Re: Поддержка Python в Majordomo

Добавлено: Вт окт 13, 2020 2:41 pm
Gastello007
Ошибка при вызове метода

Код: Выделить всё

This is Python script code Traceback (most recent call last): 
File "/var/www/cms/python/9ade39b370461bce7ea5ac5a14394bab.py", 
line 16, in mjdm.callMethod("XiRelay10.turnOn") File "/var/www/lib/python/mjdm.py",
 line 41, in callMethod callAPI("/api/method/"+str(method_name),"GET",params) 
 TypeError: callAPI() takes from 1 to 2 positional arguments but 3 were given

Re: Поддержка Python в Majordomo

Добавлено: Сб окт 24, 2020 4:32 am
VELNIN
vitt76 писал(а):
Сб дек 28, 2019 8:02 pm
У меня проблема с передачей параметров между скриптами на php и python. В шапке написано
можно использовать через переменную params -- она имеет тип "словарь" и будет содержать передаваемые параметры
Опытным путем я установил, что параметры в этом словаре лежат под одноименным ключом - params.
Я пытаюсь передавать параметр из php-скрипта в pyrhon-скрипт PlayYS, но такое впечатление, что обе следующих конструкции

Код: Выделить всё

runScript('PlayYS', $text);
runScript('PlayYS',"{'params' : '".$text."'}");
ничего не передают, по крайней мере через

Код: Выделить всё

video_url = params['params']
ничего считать не удается, а из GET параметр считывается нормально.

И вторая проблема, когда из python-скрипта я передаю параметр дальше в php

Код: Выделить всё

mjdm.runScript('sendAdminTelegram','привет')
в ответ просто тишина, даже если это просто текстовая строка.
Что я не так делаю?
Тоже самое. Параметры из mjdm.runScript не передаются.

Re: Поддержка Python в Majordomo

Добавлено: Сб окт 24, 2020 8:40 pm
Chainik
VELNIN писал(а):
Сб окт 24, 2020 4:32 am
Тоже самое. Параметры из mjdm.runScript не передаются.
Попробуйте так (вдруг поможет):

Код: Выделить всё

runScript('PlayYS',array('params'=>$text));
Или так:

Код: Выделить всё

runScript("PlayYS","parameter=".$text);

Re: Поддержка Python в Majordomo

Добавлено: Ср ноя 11, 2020 1:14 pm
max506
С кастомные модули-дополнения можно на Python реализовывать?

Re: Поддержка Python в Majordomo

Добавлено: Ср ноя 11, 2020 2:16 pm
tarasfrompir
max506 писал(а):
Ср ноя 11, 2020 1:14 pm
С кастомные модули-дополнения можно на Python реализовывать?
А прочитать первый пост из темы - тяжело ? или надо ждать ответа - вдруг кто чего скажет?

Re: Поддержка Python в Majordomo

Добавлено: Сб дек 09, 2023 6:01 pm
arivano
Всем здрасьте!
Система на Debian 12.
Прикручиваю к MJ счетчик SDM230 от eastrongroup через питон (версия 3.11.2).
НА просторах инета был найден простой скрипт работы с modbus через minimalmodbus:

Код: Выделить всё

import minimalmodbus
import serial
instrument = minimalmodbus.Instrument('/dev/ttyUSB0',1)
instrument.serial.baudrate= 9600
instrument.serial.bytesize = 8
instrument.serial.parity = serial.PARITY_NONE
instrument.serial.stopbits = 1
instrument.serial.timeout = 1 # seconds
instrument.address
instrument.mode = minimalmodbus.MODE_RTU
data = instrument.read_float(0,4,2)
self.setProperty("Voltage",data)
data = instrument.read_float(6,4,2)
self.setProperty("Current",data)
data = instrument.read_float(12,4,2)
self.setProperty("Power",data)
data = instrument.read_float(18,4,2)
self.setProperty("Active_apparent_power",data)
data = instrument.read_float(24,4,2)
self.setProperty("Reactive_apparent_power",data)
data = instrument.read_float(30,4,2)
self.setProperty("Power_factor",data)
data = instrument.read_float(36,4,2)
self.setProperty("Phase_angle",data)
data = instrument.read_float(70,4,2)
self.setProperty("Frequency",data)
data = instrument.read_float(72,4,2)
self.setProperty("Import_active_energy",data)
data = instrument.read_float(74,4,2)
self.setProperty("Export_active_energy",data)
data = instrument.read_float(76,4,2)
self.setProperty("Import_reactive_energy",data)
data = instrument.read_float(78,4,2)
self.setProperty("Export_reactive_energy",data)
data = instrument.read_float(342,4,2)
self.setProperty("Total_active_energy",data)
data = instrument.read_float(344,4,2)
self.setProperty("Total_reactive_energy",data)
Код вписан в методах. При попытке протестировать ошибка, на:

Код: Выделить всё

/var/www/html/cms/python/f36b60f1435efb9465ea0a6db49cdcb4.py", line 52, in thisMethod self.setProperty("Voltage",data) File "/var/www/html/lib/python/mjdm.py", line 14, in setProperty setGlobal(self.object_name + "." + property_name, value) ^^^^^^^^^ NameError: name 'setGlobal' is not defined
Само собой. тут в теме есть инфа, что с питон 3 возникает подобная ошибка, потому попытался в переменных прописать

Код: Выделить всё

Define('PYTHON_PATH','/usr/bin/python2');
Но, при запуске кода метода, все равно ошибка, при этом есть текст

Код: Выделить всё

#!/usr/bin/env python3
Подскажите, как решить проблему, пожалуйста.
Отдельно скрипт без self.setProperty с выводом в консоль работает.