Поддержка Python в Majordomo
Модератор: immortal
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Поддержка Python в Majordomo
PR в альфу, а ты в мастер отправил.
-
- Сообщения: 20
- Зарегистрирован: Чт авг 01, 2019 5:06 pm
- Благодарил (а): 3 раза
- Поблагодарили: 8 раз
Re: Поддержка Python в Majordomo
В теле функции не получается получить или изменить значение выдает ошибку компилятора
Код: Выделить всё
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
-
- Сообщения: 20
- Зарегистрирован: Чт авг 01, 2019 5:06 pm
- Благодарил (а): 3 раза
- Поблагодарили: 8 раз
Re: Поддержка Python в Majordomo
Ошибка при вызове метода
Код: Выделить всё
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
- За это сообщение автора Gastello007 поблагодарил:
- VELNIN (Сб окт 31, 2020 12:22 am)
- Рейтинг: 1.16%
Re: Поддержка Python в Majordomo
Тоже самое. Параметры из mjdm.runScript не передаются.vitt76 писал(а): ↑Сб дек 28, 2019 8:02 pmУ меня проблема с передачей параметров между скриптами на php и python. В шапке написаноОпытным путем я установил, что параметры в этом словаре лежат под одноименным ключом - params.можно использовать через переменную params -- она имеет тип "словарь" и будет содержать передаваемые параметры
Я пытаюсь передавать параметр из php-скрипта в pyrhon-скрипт PlayYS, но такое впечатление, что обе следующих конструкцииничего не передают, по крайней мере черезКод: Выделить всё
runScript('PlayYS', $text); runScript('PlayYS',"{'params' : '".$text."'}");
ничего считать не удается, а из GET параметр считывается нормально.Код: Выделить всё
video_url = params['params']
И вторая проблема, когда из python-скрипта я передаю параметр дальше в phpв ответ просто тишина, даже если это просто текстовая строка.Код: Выделить всё
mjdm.runScript('sendAdminTelegram','привет')
Что я не так делаю?
-
- Сообщения: 1463
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Поддержка Python в Majordomo
Попробуйте так (вдруг поможет):
Код: Выделить всё
runScript('PlayYS',array('params'=>$text));
Код: Выделить всё
runScript("PlayYS","parameter=".$text);
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 816 раз
Re: Поддержка Python в Majordomo
А прочитать первый пост из темы - тяжело ? или надо ждать ответа - вдруг кто чего скажет?
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 19
- Зарегистрирован: Пт авг 05, 2016 5:13 pm
- Благодарил (а): 5 раз
- Поблагодарили: 1 раз
Re: Поддержка Python в Majordomo
Всем здрасьте!
Система на Debian 12.
Прикручиваю к MJ счетчик SDM230 от eastrongroup через питон (версия 3.11.2).
НА просторах инета был найден простой скрипт работы с modbus через minimalmodbus:
Код вписан в методах. При попытке протестировать ошибка, на:
Само собой. тут в теме есть инфа, что с питон 3 возникает подобная ошибка, потому попытался в переменных прописать
Но, при запуске кода метода, все равно ошибка, при этом есть текст
Подскажите, как решить проблему, пожалуйста.
Отдельно скрипт без self.setProperty с выводом в консоль работает.
Система на 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
Код: Выделить всё
Define('PYTHON_PATH','/usr/bin/python2');
Код: Выделить всё
#!/usr/bin/env python3
Отдельно скрипт без self.setProperty с выводом в консоль работает.