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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

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

Сообщение savenko_egor » Вт мар 24, 2020 3:10 pm

PR в альфу, а ты в мастер отправил.
Аватара пользователя
artek
Сообщения: 3
Зарегистрирован: Пн мар 23, 2020 1:14 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение artek » Вт мар 24, 2020 3:30 pm

Gastello007
Сообщения: 20
Зарегистрирован: Чт авг 01, 2019 5:06 pm
Благодарил (а): 3 раза
Поблагодарили: 8 раз

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

Сообщение Gastello007 » Чт окт 08, 2020 2:31 pm

В теле функции не получается получить или изменить значение выдает ошибку компилятора

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

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
Gastello007
Сообщения: 20
Зарегистрирован: Чт авг 01, 2019 5:06 pm
Благодарил (а): 3 раза
Поблагодарили: 8 раз

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

Сообщение Gastello007 » Вт окт 13, 2020 2:41 pm

Ошибка при вызове метода

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

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%
VELNIN
Сообщения: 3
Зарегистрирован: Вт сен 24, 2019 1:53 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение VELNIN » Сб окт 24, 2020 4:32 am

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 не передаются.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Сб окт 24, 2020 8:40 pm

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

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

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

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

runScript("PlayYS","parameter=".$text);
max506
Сообщения: 88
Зарегистрирован: Чт сен 08, 2016 3:14 pm
Благодарил (а): 17 раз
Поблагодарили: 0

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

Сообщение max506 » Ср ноя 11, 2020 1:14 pm

С кастомные модули-дополнения можно на Python реализовывать?
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

Сообщение tarasfrompir » Ср ноя 11, 2020 2:16 pm

max506 писал(а):
Ср ноя 11, 2020 1:14 pm
С кастомные модули-дополнения можно на Python реализовывать?
А прочитать первый пост из темы - тяжело ? или надо ждать ответа - вдруг кто чего скажет?
Спасибо нам ПОМОЖЕТ..!
arivano
Сообщения: 19
Зарегистрирован: Пт авг 05, 2016 5:13 pm
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение arivano » Сб дек 09, 2023 6:01 pm

Всем здрасьте!
Система на 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 с выводом в консоль работает.
Ответить