[PYTHON] Ziehen Sie Smart Meter-Informationen mit der billigsten Hardware heraus

Einführung

Mit der Deregulierung des Stroms wird die Installation von ** intelligenten Zählern ** gefördert.

Durch die Einführung von ** intelligenten Zählern **, die von Elektrizitätsunternehmen installiert wurden, und ** HEMS-Visualisierungsterminal-ähnlichen Dingen **, die von jedem Unternehmen verkauft werden, ** kann der Stromverbrauch usw. in Echtzeit angezeigt werden **. Ich werde.

Jedoch! , ** HEMS-Visualisierungsterminal-ähnliches Ding ** ist ** die Preisfestsetzung für die Wohnungsreformindustrie ** sehr ** teuer **.

Der Zweck dieses Artikels ist es daher, ** HEMS-Visualisierungsterminal-ähnliche Dinge ** zu einem niedrigen Preis ** herzustellen.

Beachten

Es wird davon ausgegangen, dass sich die Geschichte im Stromversorgungsgebiet von Tokio befindet. Wenn Sie jedoch im Versorgungsgebiet eines anderen Unternehmens wohnen, lesen Sie bitte den Namen des Energieversorgungsunternehmens m (_ _) m

Die physische Kommunikationsebene wird von jedem Unternehmen festgelegt, aber als ich den Deckel öffnete, wurde sie von Wi-SUN (später beschrieben) landesweit vereinheitlicht. Die Hardware, die Sie kaufen sollten, ändert sich nirgendwo im Land.

Hardware-

Lassen Sie ein Smart Meter installieren

Zunächst muss ein Smart Meter installiert sein.

** F: Aber es ist teuer, nicht wahr? ** **. ** A: Nein, es ist kostenlos! ** **.

Ursprünglich wird es durch ein intelligentes Messgerät ersetzt, auch wenn Sie es in Ruhe lassen. Wenn Sie jedoch nach "Zuerst ausführen" fragen, wird der Austauscharbeit Vorrang eingeräumt.

Mit der Deregulierung des Stromverbrauchs ist es auch möglich geworden, ein Elektrizitätsunternehmen auszuwählen. Wenn Sie jedoch das Elektrizitätsunternehmen wechseln, wird es automatisch durch ein intelligentes Messgerät ersetzt. Es wird daher empfohlen, auf ein anderes zu wechseln.

Welches Energieunternehmen Sie wählen, um Geld zu sparen, hängt von der Menge an Strom ab, die von jedem Haushalt verbraucht wird. Wenn Sie es also mit Price.com usw. vergleichen, Es wird gut sein.

Wenn der Stromverbrauch gering ist, z. B. in einem Haushalt, kann es billiger sein, TEPCO so zu belassen, wie es ist.

Beantragen Sie den B-Route-Service

Plötzlich kam ein Wort heraus, das ich nicht kannte.

** B-Route ** bezieht sich auf die Kommunikationsroute zwischen dem Smart Meter und Ihrem Heim-HEMS-Gerät. (Obwohl die Routen A und C ebenfalls Begriffe sind, werden Erklärungen weggelassen, da sie seitwärts verlaufen.)

Wenn Sie sich für den B-Routendienst bewerben, erhalten Sie die ID und das Passwort des Smart Meters. Die Nutzungsgebühr ist kostenlos.

Selbst wenn Sie aufgrund der Deregulierung der Stromversorgung zwischen Energieversorgungsunternehmen wechseln, ist das Anwendungsziel für den B-Routendienst TEPCO. Um genau zu sein, ist ** Tokyo Electric Power Grid Co., Ltd. ** für die Energieübertragung und -verteilung verantwortlich.

Wenn Sie sich für den B-Routendienst bewerben, beantragen Sie bereits vor dem Austausch mit dem Smart Meter implizit den Ersatz durch den Smart Meter.

Bewerben wir uns über den unten stehenden Link Informationsübertragungsdienst für Leistungsmesser (B-Routendienst) (Außer TEPCO versuchen Sie es bitte mit Google mit dem Namen des Energieversorgungsunternehmens und dem B-Routenservice.)

In der Notiz auf dieser Seite

  • Kunden werden gebeten, die Geräte wie HEMS-Geräte im Haus des Kunden vorzubereiten.

Es wird geschrieben, dass "Geräte im Haus des Kunden wie HEMS-Geräte" am Ende dieses Artikels hergestellt werden.

Die ID wird übrigens per Post und das Passwort per Post verschickt. Ist es nicht umgekehrt?

Der Umschlag, an den der Ausweis gesendet wird, ist übrigens ein Shoboy, dessen Absender mit einem Stempel bedrückt wird. Ich spüre die mangelnde Motivation von TEPCO. DSC_0472.JPG

Kaufen Sie ein Wi-SUN-Kommunikationsgerät

Außerdem kamen einige Wörter heraus, die ich nicht kannte.

Wi-SUN ist ein drahtloser Standard für die Kommunikation mit intelligenten Zählern. (Nicht nur auf intelligente Zähler beschränkt, sondern ein internationaler Standard aus Japan, der auf einen geringen Stromverbrauch, große Entfernungen und einen hochzuverlässigen drahtlosen Standard abzielt, der mit Wi-Fi nicht möglich ist. Jetzt ist er ein Standard, der nur für japanische intelligente Zähler praktisch ist. Ich mache mir Sorgen, dass Galapagos in Zukunft angerufen wird.)

Hier wird ROHMs BP35A1 als Wi-SUN-Kommunikationsgerät verwendet. Ich werde. Es scheint das billigste Wi-SUN-Gerät zu sein, das normale Leute kaufen können.

BP35A1withMathor.jpg

Auf diesem Bild scheint das Motherboard BP359C notwendig zu sein, aber es ist unnötig, weil es voller unnötiger Funktionen ist.

Die Adapterplatine BP35A7A ist mit anderen Worten eine "Breakout-Platine". Es ist ein Typ, der in einen Abstand von 2,54 mm konvertiert, der für elektronische Amateurarbeiten einfach zu verwenden ist.

Die Adapterplatine BP35A7A verfügt über einen seriellen 3,3-V-Anschluss, sodass Sie sie an einen Mikrocomputer wie Raspeye anschließen oder über eine USB-serielle Konvertierung an einen PC anschließen können.

Einfacher

BP35A1, USB-Dongle mit integrierter serieller USB-Konvertierung, [WSR35A1-00](http://www.rohm.co.jp/web/japan/news-detail?news-title=2014-10-02_news&defaultGroupId = false) ist ebenfalls verfügbar. Es ist 15.000 Yen (ohne Steuern).

WSR35A1-00.jpg

Ich denke, das ist für Anfänger in der elektronischen Arbeit einfach. Es gibt einen Nachteil (?), Dass es sich nicht mehr um ein elektronisches Werk handelt, da es nur an den USB-Anschluss angeschlossen ist.

Wer elektronisch arbeiten kann, kann mit BP35A1, Adapterplatine und USB-Seriell-Konvertierung (oder direktem Anschluss an den seriellen Pin von Raspeye) etwas billiger arbeiten.

Zusammenfassung der Hardwarevorbereitung

Ich habe es auch weggelassen, aber ich brauche auch einen Computer, um das Mutterschiff zu sein. Das folgende Beispiel wurde in Python geschrieben, daher denke ich, dass jeder Computer, auf dem Python ausgeführt wird, funktioniert.

Software

Es werden ungefähr drei Materialien benötigt, um Software zu erstellen. Sie müssen sich das Beispiel in diesem Artikel nicht ansehen, um es zu verschieben. Wenn Sie jedoch weitere Verbesserungen vornehmen möchten, lesen Sie bitte das Beispiel.

Material von BP35A1

"BP35A1 Command Reference Manual" auf der Support-Seite "ROHM Sub-GHz Series" (http://micro.rohm.com/jp/download_support/wi-sun/)

Selbst wenn Sie WSR35A1-00 verwenden, müssen Sie sich auf das "BP35A1 Command Reference Manual" beziehen, da der Inhalt BP35A1 ist.

ECHONET Lite Standard

ECHONET Lite Standard Ver.1.12 (japanische Version)

Bis zu 5 Exemplare sind voller Volumen, aber ich denke, es reicht vorerst aus, sich "Teil 2 ECHONET Lite Communication Middleware-Spezifikationen" anzusehen.

Detaillierte Vorschriften für ECHONET-Geräteobjekte

ANHANG ECHONET Device Object Detaillierte Bestimmungen Release H

Es ist größer als der Hauptteil von ANHANG und eine Geschäftsmethode im Anhang! Es ist in einem Zustand, aber es ist groß, weil die Geschichte verschiedener Geräte geschrieben ist. Wenn Sie auf den Tisch schauen, werden Sie begeistert sein, alle Arten von Haushaltsgeräten zu sehen, oder?

Derzeit ist es in Ordnung, nur den Smart Meter zu betrachten (Niederdruck-Smart Power Meter Klassenregelung).

Beispielprogramm

Als Programmerstellungsrichtlinie

Wir legen großen Wert auf solche Dinge. Es ist ein schlecht benommenes Programm.

Die verwendete Sprache war Python 2.7. Ich verwende Pyserial für die serielle Kommunikation. Bei Raspbian sind Python und Pyserial von Anfang an enthalten (2014-06-02 oder höher)

Es wurde für den Betrieb unter Windows und Mac überprüft. (Vorausgesetzt, Python + Pyserial ist installiert)

Bearbeiten Sie die ID, das Kennwort und den Gerätenamen der seriellen Schnittstelle entsprechend Ihrer Umgebung.

bp35a1.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function

import sys
import serial
import time

#B-Routenauthentifizierungs-ID (die per E-Mail von TEPCO Power Grid gesendete ID)
rbid  = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#B-Routenauthentifizierungskennwort (das per E-Mail von TEPCO Power Grid gesendete Kennwort)
rbpwd = "XXXXXXXXXXXX"
#Name des seriellen Anschlussgeräts
serialPortDev = 'COM3'	#Für Windows
serialPortDev = '/dev/ttyUSB0'	# Linux(Im Fall von Raspeltorte usw.)
serialPortDev = '/dev/cu.usbserial-A103BTPR'	#Für Mac

#Initialisierung der seriellen Schnittstelle
ser = serial.Serial(serialPortDev, 115200)

#Versuchen Sie vorerst, die Version zu bekommen (Sie müssen es nicht tun)
ser.write("SKVER\r\n")
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #Ausführung

#B Einstellung des Root-Authentifizierungskennworts
ser.write("SKSETPWD C " + rbpwd + "\r\n")
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)

#B Einstellung der Routenauthentifizierungs-ID
ser.write("SKSETRBID " + rbid + "\r\n")
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)

scanDuration = 4;   #Scan Zeit. Es ist 6 in der Stichprobe, aber Sie können mit 4 gehen. (Wenn es nicht funktioniert, erhöhen Sie es und versuchen Sie es erneut.)
scanRes = {} #Ergebniscontainer scannen

#Scan-Wiederholungsschleife (bis etwas gefunden wurde)
while not scanRes.has_key("Channel") :
	#Aktiven Scan durchführen (mit IE)
	#Es braucht Zeit. Über 10 Sekunden?
	ser.write("SKSCAN 2 FFFFFFFF " + str(scanDuration) + "\r\n")

	#Schleife bis zum Ende des Scans für jeden Scan
	scanEnd = False
	while not scanEnd :
		line = ser.readline()
		print(line, end="")

		if line.startswith("EVENT 22") :
			#Ich habe das Scannen beendet (ob gefunden oder nicht)
			scanEnd = True
		elif line.startswith("  ") :
			#Wenn Sie es scannen und finden, öffnen Sie zwei Leerzeichen und die Daten werden kommen
			#Beispiel
			#  Channel:39
			#  Channel Page:09
			#  Pan ID:FFFF
			#  Addr:FFFFFFFFFFFFFFFF
			#  LQI:A7
			#  PairID:FFFFFFFF
			cols = line.strip().split(':')
			scanRes[cols[0]] = cols[1]
	scanDuration+=1

	if 7 < scanDuration and not scanRes.has_key("Channel"):
		#Sie können bis zu 14 als Argument angeben, aber wenn Sie mit 7 fehlschlagen, ist es nicht mehr nutzlos
		print("Scan erneut versuchen")
		sys.exit()	####Itofuyu####

#Stellen Sie den Kanal aus dem Scan-Ergebnis ein.
ser.write("SKSREG S2 " + scanRes["Channel"] + "\r\n")
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)

#Stellen Sie die Pan-ID anhand der Scanergebnisse ein
ser.write("SKSREG S3 " + scanRes["Pan ID"] + "\r\n")
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)

#MAC-Adresse(64bit)Zur IPV6-Verbindung der lokalen Adresse.
# (Ich konvertiere mit der Funktion von BP35A1, aber gibt es eine Geschichte, in der ich nur die Zeichenfolge konvertieren sollte? ??)
ser.write("SKLL64 " + scanRes["Addr"] + "\r\n")
print(ser.readline(), end="") #Echo zurück
ipv6Addr = ser.readline().strip()
print(ipv6Addr)

#Startet die PANA-Verbindungssequenz.
ser.write("SKJOIN " + ipv6Addr + "\r\n");
print(ser.readline(), end="") #Echo zurück
print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)

#Warten auf den Abschluss der PANA-Verbindung (gibt ca. 10 Zeilen zurück)
bConnected = False
while not bConnected :
	line = ser.readline()
	print(line, end="")
	if line.startswith("EVENT 24") :
		print("PANA-Verbindungsfehler")
		sys.exit()	####Itofuyu####
	elif line.startswith("EVENT 25") :
		#Verbindung hergestellt!
		bConnected = True

#Stellen Sie danach das Zeitlimit für die serielle Kommunikation ein
ser.timeout = 2

#Smart Meter löst eine Benachrichtigung über die Instanzliste aus
# (ECHONET-Lite_Ver.1.12_02.pdf p.4-16)
print(ser.readline(), end="") #ignorieren

while True:
	#ECHONET Lite Rahmenerstellung
	#Referenzmaterial
	#・ ECHONET-Lite_Ver.1.12_02.pdf (EL unten)
	#· Blinddarm_H.pdf (Unter AppH)
	echonetLiteFrame = ""
	echonetLiteFrame += "\x10\x81"		# EHD (Referenz:EL p.3-2)
	echonetLiteFrame += "\x00\x01"		# TID (Referenz:EL p.3-3)
	#EDATA von hier
	echonetLiteFrame += "\x05\xFF\x01"	# SEOJ (Referenz:EL p.3-3 AppH p.3-408~)
	echonetLiteFrame += "\x02\x88\x01"	# DEOJ (Referenz:EL p.3-3 AppH p.3-274~)
	echonetLiteFrame += "\x62"			# ESV(62:Eigenschaftswert-Leseanforderung) (Referenz:EL p.3-5)
	echonetLiteFrame += "\x01"			# OPC(1 Stück)(Referenz:EL p.3-7)
	echonetLiteFrame += "\xE7"			# EPC(Referenz:EL p.3-7 AppH p.3-275)
	echonetLiteFrame += "\x00"			# PDC(Referenz:EL p.3-9)
	
	#Befehl senden
	command = "SKSENDTO 1 {0} 0E1A 1 {1:04X} {2}".format(ipv6Addr, len(echonetLiteFrame), echonetLiteFrame)
	ser.write(command)

	print(ser.readline(), end="") #Echo zurück
	print(ser.readline(), end="") #EREIGNIS 21 sollte kommen (nicht markiert)
	print(ser.readline(), end="") #OK sollte kommen (keine Prüfung)
	line = ser.readline()         #ERX UDP sollte kommen
	print(line, end="")
	
	#Die empfangenen Daten enthalten manchmal unterschiedliche Daten
	#Weil es möglicherweise übersehen wird und seltsame Daten erfasst werden können.
	#Die Prüfung ist streng.
	if line.startswith("ERXUDP") :
		cols = line.strip().split(' ')
		res = cols[8]	#UDP empfing Datenteil
		#tid = res[4:4+4];
		seoj = res[8:8+6]
		#deoj = res[14,14+6]
		ESV = res[20:20+2]
		#OPC = res[22,22+2]
		if seoj == "028801" and ESV == "72" :
			#Smart Meter(028801)Antwort von(72)Wenn
			EPC = res[24:24+2]
			if EPC == "E7" :
				#Der Inhalt ist ein Momentanleistungsmesswert(E7)Wenn ja
				hexPower = line[-8:]	#Die letzten 4 Bytes (8 Hexadezimalzeichen) sind die momentanen Leistungsmessungen
				intPower = int(hexPower, 16)
				print(u"Momentane Leistungsmessung:{0}[W]".format(intPower))
				


#Ich werde nicht hierher kommen, weil es eine Endlosschleife ist
ser.close()

Weitere Informationen zum Programm finden Sie in den Kommentaren.

Wenn ich das mache, bekomme ich folgende Ausgabe: Da es sich um ein Beispiel zur Förderung des Verständnisses handelt, ist der Kommunikationsinhalt laut.

$ ./bp35a1.py
SKVER
EVER 1.2.10
OK
SKSETPWD C XXXXXXXXXXXX
OK
SKSETRBID XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
OK
SKSCAN 2 FFFFFFFF 4
OK
EVENT 22 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
SKSCAN 2 FFFFFFFF 5
OK
EVENT 20 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
EPANDESC
  Channel:39
  Channel Page:09
  Pan ID:XXXX
  Addr:XXXXXXXXXXXXXXXX
  LQI:95
  PairID:XXXXXXXX
EVENT 22 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
SKSREG S2 39
OK
SKSREG S3 XXXX
OK
SKLL64 XXXXXXXXXXXXXXXX
FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
SKJOIN FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX
OK
EVENT 21 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 00

~ Ausgelassen ~

SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 00
OK
ERXUDP FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 0E1A XXXXXXXXXXXXXXXX 1 0012 1081000102880105FF017201E704000002AE
Momentane Leistungsmessung:686[W]
SKSENDTO 1 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 1 000E
EVENT 21 FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 00
OK
ERXUDP FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX FE80:0000:0000:0000:XXXX:XXXX:XXXX:XXXX 0E1A 0E1A XXXXXXXXXXXXXXXX 1 0012 1081000102880105FF017201E7040000029B
Momentane Leistungsmessung:667[W]

~ Wiederhole ~

Die erste Verhandlung dauert ca. 10 Sekunden. Es scheint auch, dass die Antwort nach ungefähr 1 Sekunde nach dem Auslösen der Anfrage kommt. Ich habe den Eindruck, dass es für "Echtzeit" und "Momentanwert" etwas langsam ist.

abschließend

Wir haben die Hardware BP35A1 für die Kommunikation mit dem Smart Meter eingeführt und ein Mindestmaß an Software gezeigt, die es verwendet. Es sieht aus wie ein Programm, das nur auf die Standardausgabe ausgibt, aber ich denke, dass es nützlich war, um die Kommunikationsspezifikationen zu verstehen, da es keinen zusätzlichen Code wie für die GUI gab.

Intelligente Messgeräte können nur verwendet werden, indem sie an verschiedene Geräte angeschlossen werden. Daher halte ich es für sehr nützlich, dass allgemeine Benutzer auf Live-Informationen zugreifen können. Wir hoffen, dass dieser Artikel Ihnen hilft, ihn auf Ihren Home-Hack anzuwenden.

Nachtrag 1

Ich habe die referenzierte Seite weggelassen. Entschuldigung.

Zeigen Sie die momentane Leistung und den Verlauf des Smart Meters mit einem Webbrowser an

[Ich habe einen Leistungsmesser mit einem Smart Meter und Raspberry Pi hergestellt] (http://chappnet.hateblo.jp/entry/2015/08/23/112738)

Nachtrag 2

Das Antwortformat von ERXUDP (und ERXTCP) ist standardmäßig binär, aber umständlich und muss in hexadezimales ASCII geändert werden.

Bevor Sie den Python-Beispielcode ausführen, senden Sie den Befehl WOPT 01 mit ** TeraTerm usw. ** **.

Es wird nicht empfohlen, das Programm beim Start zu senden, da es in dem Moment, in dem Sie diesen Befehl eingeben, zum integrierten Flash wechselt. Wenn Sie es in Ihr Programm aufnehmen möchten, lesen Sie mit dem Befehl ROPT die aktuellen Einstellungen und senden Sie den Befehl WOPT 01 nur, wenn Sie ihn ändern müssen.

Nachtrag 3

Es ist umstritten, ob der Preis für den USB-Dongle WSR35A1-00 15.000 Yen oder der Preis für BP35A1 und Umgebung weniger als 10.000 Yen beträgt, was billig oder teuer ist. Es ist ein eingängiger Titel, aber ich persönlich finde ihn teuer. Ich denke, wenn wir mehr Geräte bekommen können, können wir uns dem Preis eines WiFi-Dongles (ca. 1000 Yen) nähern. Wenn Sie ein günstigeres Gerät kennen, teilen Sie uns dies bitte in den Kommentaren mit. (Es scheint, dass es für Fretz Mill Energy einen 5000-Yen-USB-Dongle gibt, aber ich kenne die Spezifikationen nicht, daher kann ich ihn nur verwenden, wenn ich mich bei Fretz Mierne anmelde.)

Nachtrag 4

Ein Produkt namens RL7023 Stick-D / IPS wurde von Tesera Technology Co., Ltd. veröffentlicht. Sie können es bei chip1stop für 8.060 Yen (ohne Steuern) kaufen. Die Kommunikationsspezifikationen scheinen mit WSR35A1-00 und BP35A1 identisch zu sein. Ich habe bestätigt, dass das obige Programm so funktioniert, wie es ist. Es ist klein und billig, daher ist die aktuelle Empfehlung hier.

DSC_0447.JPG

Nachtrag 5

Ein Wi-SUN HAT-Kit zum einfachen Verbinden von M5StickC und BP35A1 ist unter BOOTH erhältlich. "Wi-SUN HAT" -Kit für M5 Stick C Wenn Sie die ESP32-Serie verwenden möchten, ist diese Kombination meiner Meinung nach der beste Kauf. (Wenn Sie es mit einem USB-Gerät wie Raspeye verwenden möchten, finde ich den RL7023 Stick-D / IPS im vorherigen Abschnitt gut.)

Recommended Posts

Ziehen Sie Smart Meter-Informationen mit der billigsten Hardware heraus
Lesen Sie die Leistung des Smart Meters mit M5StickC (BP35C0-J11-T01 Edition) ab.
Holen Sie sich die neuesten AMI-Informationen mit der AWS CLI
Finden Sie den Tag nach Datum / Uhrzeit heraus