Uživatelské nástroje

Nástroje pro tento web


smarthome:newpi

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
smarthome:newpi [2019/04/23 19:53]
mwk [DHT-22]
smarthome:newpi [2021/10/13 13:42] (aktuální)
mwk
Řádek 1: Řádek 1:
 ====== Nové SpiHOME ====== ====== Nové SpiHOME ======
 +===== Souhrn služeb =====
 +^ nazev sluzby          ^ popis                      ^
 +| elmer.service         | vycitani elmeru            |
 +| dht22.service         | hodnoty z DHT22            |
 +| dallas.service        | hodnoty z 1wire            |
 +| mqtt-gpio.service     | ovladani gpio rele         |
 +| relay.service         | inicializace rele          |
 +| zabbix-agent.service  | zabak                      |
 +| mpd.service           | music player (neni vsude)  |
 +| bellj.service         | zvonek nahore (neni vsude)  |
 +| bells.service         | zvonek dole (neni vsude)  |
 +===== Sračky na úvod =====
 <code bash> <code bash>
 apt update && apt upgrade && apt install python-pip mc apt update && apt upgrade && apt install python-pip mc
Řádek 24: Řádek 36:
  sudo systemctl enable myscript.service</code>  sudo systemctl enable myscript.service</code>
  
 +==== Log2RAM ====
 +https://github.com/azlux/log2ram
 +==== Zapojeni headeru ====
 +{{ :smarthome:qgvhr.png?600 |}}
 <code> <code>
- 
  +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+  +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+
  | BCM | wPi |   Name  | use  | V | Physical | V | use  | Name    | wPi | BCM |  | BCM | wPi |   Name  | use  | V | Physical | V | use  | Name    | wPi | BCM |
Řádek 32: Řádek 47:
    2 |   8 |   SDA.1 |      | 1 |  3 || 4  |        | 5v      |         |    2 |   8 |   SDA.1 |      | 1 |  3 || 4  |        | 5v      |         |
    3 |   9 |   SCL.1 |      | 1 |  5 || 6  |        | 0v      |         |    3 |   9 |   SCL.1 |      | 1 |  5 || 6  |        | 0v      |         |
-   4 |   7 | GPIO. 7 |      | 0 |  7 || 8  | 0 |      | TxD     | 15  | 14  |+   4 |   7 | GPIO. 7 | 1wire| 0 |  7 || 8  | 0 |      | TxD     | 15  | 14  |
               0v |      |    9 || 10 | 1 |      | RxD     | 16  | 15  |               0v |      |    9 || 10 | 1 |      | RxD     | 16  | 15  |
-  17 |   0 | GPIO. 0 | 1RB1 | 0 | 11 || 12 | 0 |      | GPIO. 1 | 1   | 18  |+  17 |   0 | GPIO. 0 | 1RB1 | 0 | 11 || 12 | 0 |DHT-22| GPIO. 1 | 1   | 18  |
   27 |   2 | GPIO. 2 | 1RB2 | 0 | 13 || 14 |        | 0v      |         |   27 |   2 | GPIO. 2 | 1RB2 | 0 | 13 || 14 |        | 0v      |         |
-  22 |   3 | GPIO. 3 | 1RB3 | 0 | 15 || 16 | 0 |DHT-22| GPIO. 4 | 4   | 23  |+  22 |   3 | GPIO. 3 | 1RB3 | 0 | 15 || 16 | 0 |RF433R| GPIO. 4 | 4   | 23  |
             3.3v |      |   | 17 || 18 | 0 |      | GPIO. 5 | 5   | 24  |             3.3v |      |   | 17 || 18 | 0 |      | GPIO. 5 | 5   | 24  |
   10 |  12 |    MOSI |      | 0 | 19 || 20 |        | 0v      |         |   10 |  12 |    MOSI |      | 0 | 19 || 20 |        | 0v      |         |
Řádek 59: Řádek 74:
 <code bash>pip install serial modbus_tk configparser pymodbus paho-mqtt</code> <code bash>pip install serial modbus_tk configparser pymodbus paho-mqtt</code>
 pouzivam upraveny kod [[https://github.com/ehorohorin/SDM630|odtud]] pouzivam upraveny kod [[https://github.com/ehorohorin/SDM630|odtud]]
 +<file | sdm630-mqtt.py>
 +#!/usr/bin/env python3
 +# -*- coding: utf_8 -*-
 +
 +from sdm630 import *
 +
 +import sys
 +import serial
 +import time
 +import paho.mqtt.client as mqtt
 +import logging
 +import os
 +import traceback
 +import configparser as ConfigParser
 +import time
 +
 +CONFIG_FILE = '/usr/local/bin/sdm630_mqtt/sdm630-mqtt.conf'
 +
 +logging.getLogger().setLevel(logging.WARNING)
 +
 +# time.sleep(20)
 +
 +def publish(topic,value):
 +        info = mqclient.publish("/".join((config.get("mqtt","topic_prefix"),topic)),value,qos=1)
 +        info.wait_for_publish()
 +
 +
 +if ((len(sys.argv) == 3) and sys.argv[1] == '-c'):
 +        CONFIG_FILE = sys.argv[2]
 +logging.info("Reading config...")
 +config = ConfigParser.ConfigParser()
 +confread = config.read(CONFIG_FILE)
 +logging.info("Read config {}".format(confread))
 +
 +
 +logging.info("Connecting to MQTT server...")
 +mqclient = mqtt.Client()
 +try:
 +        mqclient.connect(config.get("mqtt","server"),
 +                config.getint("mqtt","port"),
 +                config.getint("mqtt","keepalive"))
 +        mqclient.loop_start()
 +except:
 +        traceback.print_exc()
 +        logging.error("Cannot connect to MQTT server")
 +        sys.exit(1)
 +
 +logging.info("Setup...")
 +num_meters = config.getint("sdm630","num_meters")
 +meters = []
 +#connection_type = config.get("sdm630", "connection_type")
 +
 +#for i in range(num_meters):
 +#       if connection_type == 'tcp':
 +#               logging.info("Opening port {}".format(config.get("tcp","port")))
 +#               meter = SDM630TCP(host=config.get("tcp","host"),
 +#                       port=config.get("tcp","port"),
 +#                       aid=config.getint("sdm630","id"+str(i+1)),
 +#                       regfile=config.get("sdm630", "regfile"))
 +#       elif connection_type == 'rs485':
 +logging.info("Opening port {}".format(config.get("rs485","port")))
 +meter = SDM630RS485(config.get("rs485","PORT"),
 +config.getint("rs485","BAUDRATE"),
 +config.getint("sdm630","id"+str(+1)),
 +regfile=config.get("sdm630", "regfile"))
 +meters.append(meter)
 +
 +logging.info("Entering endless loop")
 +while (True):
 +        for (num,sdm630) in enumerate(meters):
 +                num += 1
 +                publish(str(num)+"/voltage/all",str(sdm630.voltx3))
 +                publish(str(num)+"/current/all",str(sdm630.ampx3))
 +                publish(str(num)+"/power/all",str(sdm630.powx3))
 +                publish(str(num)+"/voltage/l1",sdm630.v1)
 +                publish(str(num)+"/voltage/l2",sdm630.v2)
 +                publish(str(num)+"/voltage/l3",sdm630.v3)
 +                publish(str(num)+"/current/l1",sdm630.a1)
 +                publish(str(num)+"/current/l2",sdm630.a2)
 +                publish(str(num)+"/current/l3",sdm630.a3)
 +                publish(str(num)+"/power/l1",sdm630.p1)
 +                publish(str(num)+"/power/l2",sdm630.p2)
 +                publish(str(num)+"/power/l3",sdm630.p3)
 +                publish(str(num)+"/power/total",sdm630.total_power)
 +                publish(str(num)+"/voltamps/l1",sdm630.va1)
 +                publish(str(num)+"/voltamps/l2",sdm630.va2)
 +                publish(str(num)+"/voltamps/l3",sdm630.va3)
 +                publish(str(num)+"/voltage/avg",sdm630.avg_voltage)
 +                publish(str(num)+"/current/avg",sdm630.avg_current)
 +                publish(str(num)+"/current/sum",sdm630.sum_current)
 +                publish(str(num)+"/frequency",sdm630.frequency)
 +                publish(str(num)+"/voltage/l1l2",sdm630.v1v2)
 +                publish(str(num)+"/voltage/l2l3",sdm630.v2v3)
 +                publish(str(num)+"/voltage/l3l1",sdm630.v3v1)
 +                publish(str(num)+"/curent/neutral",sdm630.neutral_current)
 +                publish(str(num)+"/wh/import",sdm630.import_wh)
 +                publish(str(num)+"/wh/export",sdm630.export_wh)
 +                publish(str(num)+"/time",time.time())
 +        time.sleep(1)
 +
 +
 +</file>
 +
 +service je /lib/systemd/system/elmer.service
 +<file | elmer.service>
 +[Unit]
 +Description=My Script Service
 +#Wants=network-online.target
 +Requires=network.target
 +After=network.target
 +# After=multi-user.target
 +
 +[Service]
 +Type=simple
 +ExecStart=/usr/bin/python /usr/local/bin/sdm630_mqtt/sdm630-mqtt.py
 +Restart=on-failure
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +</file>
  
 ===== relebord ===== ===== relebord =====
Řádek 65: Řádek 201:
  
 ===== DHT-22 ===== ===== DHT-22 =====
-pouzivam gpio1potrebujeme pipnout Adafruit-Python-DHT, paho-mqtt, configparser+**napajeny 3v3** 
 +  * pouzivam gpio1 
 +  * potrebujeme pipnout Adafruit-Python-DHT, paho-mqtt, configparser
 <file | dht22-mqtt.py> <file | dht22-mqtt.py>
 #!/usr/bin/env python2 #!/usr/bin/env python2
Řádek 138: Řádek 276:
  
 </file> </file>
 +sluzba je dht22.service
smarthome/newpi.1556042029.txt.gz · Poslední úprava: 2019/04/23 19:53 autor: mwk