Я искал и изучал свою проблему, но это немного сложно, потому что у меня нет ошибки (кода) для поиска.
Я пытаюсь установить связь между моим RPI и ПЛК, после запуска сценария я получаю ответ (python Temp_buiten.py), как показано ниже, но вывод сценария такой: правильно, я получаю значение в свой ПЛК как число с плавающей запятой, как хочу, но каждый цикл, который я получаю, отвечает в моей командной строке:
pi@raspberrypi:~/scripts $ python Temp_buiten.py
@▒
A▒
pi@raspberrypi:~/scripts $
Я НЕ программист на Python, поэтому надеюсь, что кто-нибудь сможет мне помочь. Сценарий, который я пытаюсь запустить:
#!python3
#---------------Basis-------------------------
import sys
import datetime
import time
import os
import subprocess
import urllib2
import json
import base64
#--------------PLC Snap7----------------------
import S71200
from time import sleep
import snap7
from snap7.util import *
import struct
#---------------Settings----------------------
domoticzserver="192.168.1.210:8080"
domoticzusername = "Secret"
domoticzpassword = "Secret"
device = "558"
log_to_file = False
plc = S71200.S71200("192.168.1.242")
#---------------Variabelen--------------------
temp1 = 0.0
temp_woonkamer = {}
hum = 0.0
hum_stat = 0 #0 t/m 4
sensorids = ["28-0000062723e6"]
#---------------Wachtwoordenzooi--------------
base64string = base64.encodestring('%s:%s' % (domoticzusername, domoticzpassword)).replace('\n', '')
domoticzurl = 'http://'+ domoticzserver +'/json.htm? type=devices&rid='+device
#---------------Logging-----------------------
def log(message):
print message
if log_to_file == True:
logfile = open(sys.argv[0] + '.log', "a")
logfile.write(message + "\n")
logfile.close()
#---------------Info ophalen------------------
def domoticzrequest (url):
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % base64string)
#print(request)
response = urllib2.urlopen(request)
return response.read()
#--------------Status-------------------------
json_object = json.loads(domoticzrequest(domoticzurl))
if json_object["status"] == "OK":
temp1 = json_object["result"][0]['Temp']
hum = json_object["result"][0]['Humidity']
plc.writeMem("FREAL204",temp1)
sleep(1)
else:
print(device + "NOT OK")
for sensor in range(len(sensorids)):
tfile = open("/sys/bus/w1/devices/"+ sensorids[sensor] +"/w1_slave")
# Lees alle dat uit het "bestand" in een variabele.
text = tfile.read()
# Sluit het "bestand" nadat we het gelezen hebben.
tfile.close()
# We gaan nu de tekst splitsen per nieuwe regel (\n)
# en we selecteren de 2e regel [1] (1e regel = [0])
secondline = text.split("\n")[1]
# Splits de regel in "woorden", er wordt gespleten op de spaties.
# We selecteren hier het 10 "woord" [9] (tellend vanaf 0)
temperaturedata = secondline.split(" ")[9]
# De eerste 2 karakters zijn "t=", deze moeten we weghalen.
# we maken meteen van de string een integer (nummer).
temperature = float(temperaturedata[2:])
# De temperatuurwaarde moeten we delen door 1000 voor de juiste waarde.
temp_woonkamer[sensor] = temperature / 1000
plc.writeMem("FREAL200",temp_woonkamer[sensor])
sleep(1)
Подробнее здесь: https://stackoverflow.com/questions/420 ... signs-back
После запуска скрипта Python появляются странные признаки ⇐ Python
Программы на Python
-
Anonymous
1728459118
Anonymous
Я искал и изучал свою проблему, но это немного сложно, потому что у меня нет ошибки (кода) для поиска.
Я пытаюсь установить связь между моим RPI и ПЛК, после запуска сценария я получаю ответ (python Temp_buiten.py), как показано ниже, но вывод сценария такой: правильно, я получаю значение в свой ПЛК как число с плавающей запятой, как хочу, но каждый цикл, который я получаю, отвечает в моей командной строке:
pi@raspberrypi:~/scripts $ python Temp_buiten.py
@▒
A▒
pi@raspberrypi:~/scripts $
Я НЕ программист на Python, поэтому надеюсь, что кто-нибудь сможет мне помочь. Сценарий, который я пытаюсь запустить:
#!python3
#---------------Basis-------------------------
import sys
import datetime
import time
import os
import subprocess
import urllib2
import json
import base64
#--------------PLC Snap7----------------------
import S71200
from time import sleep
import snap7
from snap7.util import *
import struct
#---------------Settings----------------------
domoticzserver="192.168.1.210:8080"
domoticzusername = "Secret"
domoticzpassword = "Secret"
device = "558"
log_to_file = False
plc = S71200.S71200("192.168.1.242")
#---------------Variabelen--------------------
temp1 = 0.0
temp_woonkamer = {}
hum = 0.0
hum_stat = 0 #0 t/m 4
sensorids = ["28-0000062723e6"]
#---------------Wachtwoordenzooi--------------
base64string = base64.encodestring('%s:%s' % (domoticzusername, domoticzpassword)).replace('\n', '')
domoticzurl = 'http://'+ domoticzserver +'/json.htm? type=devices&rid='+device
#---------------Logging-----------------------
def log(message):
print message
if log_to_file == True:
logfile = open(sys.argv[0] + '.log', "a")
logfile.write(message + "\n")
logfile.close()
#---------------Info ophalen------------------
def domoticzrequest (url):
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % base64string)
#print(request)
response = urllib2.urlopen(request)
return response.read()
#--------------Status-------------------------
json_object = json.loads(domoticzrequest(domoticzurl))
if json_object["status"] == "OK":
temp1 = json_object["result"][0]['Temp']
hum = json_object["result"][0]['Humidity']
plc.writeMem("FREAL204",temp1)
sleep(1)
else:
print(device + "NOT OK")
for sensor in range(len(sensorids)):
tfile = open("/sys/bus/w1/devices/"+ sensorids[sensor] +"/w1_slave")
# Lees alle dat uit het "bestand" in een variabele.
text = tfile.read()
# Sluit het "bestand" nadat we het gelezen hebben.
tfile.close()
# We gaan nu de tekst splitsen per nieuwe regel (\n)
# en we selecteren de 2e regel [1] (1e regel = [0])
secondline = text.split("\n")[1]
# Splits de regel in "woorden", er wordt gespleten op de spaties.
# We selecteren hier het 10 "woord" [9] (tellend vanaf 0)
temperaturedata = secondline.split(" ")[9]
# De eerste 2 karakters zijn "t=", deze moeten we weghalen.
# we maken meteen van de string een integer (nummer).
temperature = float(temperaturedata[2:])
# De temperatuurwaarde moeten we delen door 1000 voor de juiste waarde.
temp_woonkamer[sensor] = temperature / 1000
plc.writeMem("FREAL200",temp_woonkamer[sensor])
sleep(1)
Подробнее здесь: [url]https://stackoverflow.com/questions/42051407/after-running-python-script-weird-signs-back[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия