Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:controllers:ferrariszaehler_lesekopf_rpi_gpio

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:controllers:ferrariszaehler_lesekopf_rpi_gpio [2014/09/11 18:08] ronny_whardware:controllers:ferrariszaehler_lesekopf_rpi_gpio [2019/08/20 21:15] (aktuell) – Entfernung E-Mailadresse / Kontakt stromsammler10
Zeile 1: Zeile 1:
 ======Ferrariszähler Lesekopf für Raspberry Pi====== ======Ferrariszähler Lesekopf für Raspberry Pi======
  
-<note important>!! in Erstellung !!</note> 
 {{ :hardware:controllers:ferraris_rpi:alte_ferrariszaehler.jpg?nolink&200|}} {{ :hardware:controllers:ferraris_rpi:alte_ferrariszaehler.jpg?nolink&200|}}
-In vielen Haushalten wird eine Ferrariszähler vom Energieversorger eingesetzt. Auch bei Photovoltaikanlage wurde / wird dieser als Einspeise-, Summen- Zäler verbaut. Es sind zum Teil zwar auch S0 Ausgänge an den alten Ferrariszälern vorhanden, welche aber durch den Energieversorger verplompt wurden. Für einen Anschluss am Ferrariszähler S0 Ausgagn muss daher ein Energieversorgertecniker anrücken. (im Raum SHK schlägt dies mit 180€ zu buche).+In vielen Haushalten wird ein Ferrariszähler vom Energieversorger eingesetzt. Auch bei Photovoltaikanlagen wurde / wird dieser als Einspeise- oder Summenzähler verbaut. Es sind zum Teil zwar auch S0-Ausgänge an den alten Ferrariszählern vorhanden, welche aber durch den Energieversorger verplombt wurden. Für einen Anschluss am Ferrariszähler S0-Ausgang muss daher ein Techniker anrücken. (im Raum SHK schlägt dies mit 180€ zu Buche).
  
-Mit dem Ferrariszähler Lesekopf für Raspberry Pi kann die Drehscheibe abgetastet und die Anzahl der Durchläufe der Rot Markierung ermittelt werden. Somit ist kein Energieversorgertecniker nötig.+Mit dem Ferrariszähler-Lesekopf für Raspberry Pi kann die Drehscheibe abgetastet und die Anzahl der Durchläufe der RotMarkierung ermittelt werden. Somit kann der Techniker-Einsatz gespart werden.
  
-Eine Test System ist [[http://volkszaehler.solarautonomie.de/frontend/?uuid=30d92400-a7c4-11e3-8460-e1409057da36|hier]] zu finden (Photovoltaik Summenzähler).+Ein Test System ist [[http://volkszaehler.solarautonomie.de/frontend/?uuid=30d92400-a7c4-11e3-8460-e1409057da36|hier]] zu finden (Photovoltaik Summenzähler).
  
 ===== Features ===== ===== Features =====
-  * eine Leuchtdiodenanzeige um den Lesekopf richtig aus zu richten+  * eine Leuchtdiodenanzeigeum den Lesekopf richtig auszurichten
   * Potenziometer zur Justage der Empfindlichkeit des Lesekopfs   * Potenziometer zur Justage der Empfindlichkeit des Lesekopfs
-  * Anschluss am GPIO Port des Raspberry +  * Anschluss direkt am GPIO Port des Raspberry 
-  * Erfassung bis zu 7 Stück über den GPIO Port möglich +  * Erfassung bis zu 8 S0- Kanäle über den GPIO Port möglich 
-  * durch Doppelseitiges Klebeband jederzeit demonierbar+  * durch doppelseitiges Klebeband jederzeit demontierbar 
 + 
 +Die Java- Aplikation kann auch für die Erfassung von LED- / S0-Zähler Impulsen verwendet werden. -> Doku folgt!
  
 ===== Stromlaufplan ===== ===== Stromlaufplan =====
  
-Die Grundschaltung wurde von [[http://www.hobbyheizer.de/index.php/haussteuerung/stromzaehler|hier]] verwendet. Das Leiterplattenlayout wurde mit Target 3001 (Conrad Edition) erstellt und dort gefertigt.+Die Grundschaltung wurde von [[http://www.hobbyheizer.de/index.php/haussteuerung/stromzaehler|hier]] abgeleitet. Das Leiterplattenlayout wurde mit Target 3001 (Conrad Edition) erstellt und dort gefertigt.
  
 {{ :hardware:controllers:ferraris_rpi:schaltplan_ferraris_rpi.jpg?450 |}} {{ :hardware:controllers:ferraris_rpi:schaltplan_ferraris_rpi.jpg?450 |}}
Zeile 24: Zeile 25:
 ===== Bestückungsplan ===== ===== Bestückungsplan =====
  
-Durch die Verwendung der trationellen HMD Löttechnik kann die Leiterplattenbestück ohne spezielle Werkzeug erfolgen.+Durch die Verwendung der traditionellen HMD Löttechnik kann die Leiterplattenbestückung ohne spezielles Werkzeug erfolgen.
  
 {{:hardware:controllers:ferraris_rpi:leiterplatte_ferraris_rpi.jpg?200|}}{{:hardware:controllers:ferraris_rpi:leiterplatte_bestueckt_oben.jpg?200|}}{{:hardware:controllers:ferraris_rpi:leiterplatte_bestueckt_unten.jpg?200|}} {{:hardware:controllers:ferraris_rpi:leiterplatte_ferraris_rpi.jpg?200|}}{{:hardware:controllers:ferraris_rpi:leiterplatte_bestueckt_oben.jpg?200|}}{{:hardware:controllers:ferraris_rpi:leiterplatte_bestueckt_unten.jpg?200|}}
  
-<note>Ursprünglich vorgesehen war eine RJ12 Stecker und eine RJ12 6P6C Buchse. Aus Kostengründen und der Montagevereinfachung wurde dies jedoch beim fertigen Lesekopf weg gelessen. Dies ist aber weiterhin auf der Platiene vorgesehen.</note>+<note>Ursprünglich vorgesehen war eine RJ12 Stecker und eine RJ12 6P6C Buchse. Aus Kostengründen und der Montagevereinfachung wurde dies jedoch beim fertigen Lesekopf weggelassen. Dies ist aber weiterhin auf der Platine vorgesehen.</note> 
 + 
 +Hier ist die Target3001 Datei hinterlegt, welche nur mit der kostenlosen Target Version von Conrad zu verwenden ist. 
 + 
 +{{:hardware:controllers:ferraris_rpi:ferraris_zaehler_sensor_v02.t3000.tar.gz|}} 
 + 
 +{{:hardware:controllers:ferraris_rpi:61182c_gerbers.zip|}}
  
 ===== Stückliste ===== ===== Stückliste =====
  
-{{ :hardware:controllers:ferraris_rpi:stueckliste_ferraris_rpi.png?800 |}}+^  **Position**  ^  **Schalplanbezeichnung**  ^  **Beschreibung**  ^  **Stück**  ^  **Völkner  Best Nr.**  ^  **Preis**  ^  **Farnell  Best Nr.**  ^  **Preis** 
 +|  1  |  R1  |  Metallschichtwiderstand 0,25W 1% 1Ok (bei Abnahme 100 Stück)  |  1  |  W76567  |  0,03€  |  2329855  |  0,02€ 
 +|  2  |  R2 / R4  |  Metallschichtwiderstand 0,25W 1% 180r (bei Abnahme 100 Stück )  |  2  |  W 76744  |  0,03€  |  2329818  |  0,02€ 
 +|  3  |  R3  |  Metallschichtwiderstand 0,25W 1% 22k (bei Abnahme 100 Stück)  |  1  |  W76256  |  0,02€  |  2329910  |  0,02  | 
 +|  4  |  C1  |  Elko  axial 1 µ F 35V  |  1  |  W45777  |  0,43€  |  1165430  |  0,77€ 
 +|  5  |  R5  |  Spindeltrimmer 25k  (Einsteller Oben)  |  1  |  W5 1657  |  1,44€  |  2329327  |  2,31€ 
 +|  6  |  D1  |  LED 3mm   Low -Current Rot  |  1  |  Q13006  |  0,19€  |  1142512  |  0,31€ 
 +|  7  |  X1  |  Opto-Reflexkoppler CNY 70  |  1  |  Q61519  |  1,23€  |  1470063  |  1,23€ 
 +|  8  |  IC2  |  Optokoppler Vishay   CNY 17-1 DIP 6 Ausführung Phototransistor/Single  |  1  |  Q17589  |  0,5€  |  1852714  |  0,21€ 
 +|  9  |  IC1  |  Operationsverstärker  Texas Instruments TLC271CP\\ GehäuseartDIP-8 Ausfü hru ng  |  1  |  Q39651  |  0,86€  |  1103011  |  0,84€ 
 +|  10  |  -  |  Modul-Gehäuse ABS Schwarz 54  x 37  x 21 Strapubox  |  1  |  S55511  |  1,76€  |         | 
 +|  12  |  -  |  Flachband -Telefonleitung 4 x 0.09 mm  x 1m  |  2  |  X70890  |  0,84€ |  1202608  |  0,65€ 
 +|  15  |  -  |  RICHCO - PST-4-01 - DRUCKABSTANDSHALTER TEARDROP (Packung\\ mit 25 Stück )  |  4  |  -  |      1675883  |  0,26€ 
 +|  ** **  **Zwischensumme**|||||7,33€|    |  6,64€     
 +|  16  |      Grundplatine (Preis bei Mindestabnahmemenge Conrad Leiterplattenservice 10 Stück)  |          11,00€  |      11,00€ 
 +|  17  | |  Pfostenstecke für GPIO Port  | | | | | 
 +|  18  | |  Klebeband  | | | | |  
 +|  Stand                  11 .09 .20 14  ||   **Endsumme**|||  18,33€  |      17,64€  |
  
-<note important>Errinnerung: Stückliste muss noch um Pfostenstecker für GPIO Port ergänzt werden!</note>+Im "Modul-Gehäuse ABS" müssen Ausparungen für den CNY70 (Vorderseite), die LED, den Spindeltrimmer und das Flachbandkabel vorgesehen werden.
  
-===== Software -> Anbindung an Volkszählermiddleware =====+===== Software -> Anbindung an Volkszählermiddleware mit Java Applikation=====
  
-Zur Datenerfassung verwende ich eine kleine Java Aplikation welche mit Hilfe [[http://pi4j.com/|pi4j]] Bibliotheken den GPIO Port Überwacht und die Impulse erfasst und Summiert.+Zur Datenerfassung wird eine Java-Applikation eingesetzt, die mit Hilfe der [[http://pi4j.com/|pi4j]] Bibliotheken den GPIO Port ereignisgesteuert überwacht, die Impulse über ein konfigurierbares Zeitintervall aufsummiert und an den lokalen VZ-Server sowie an einen externen Server überträgt.
  
-Auf dem Rapberry muss die Java JRE installiert sein: +Auf dem Raspberry muss die Java JRE installiert sein: 
-<code>apt-get update && apt-get install openjdk-7-jre</code>+<code bash>apt-get update && apt-get install openjdk-7-jre</code>
  
 +----
 +\\ 
 Für die Installation von [[http://pi4j.com/|pi4j]] sind folgende Schritte nötig: Für die Installation von [[http://pi4j.com/|pi4j]] sind folgende Schritte nötig:
-<code>wget http://pi4j.googlecode.com/files/pi4j-0.0.5.deb</code> +<code bash>wget http://pi4j.googlecode.com/files/pi4j-0.0.5.deb</code> 
-<code>sudo dpkg -i pi4j-0.0.5.deb</code>+<code bash>sudo dpkg -i pi4j-0.0.5.deb</code>
  
-Für Debuggin Zwecke wird [[http://logging.apache.org/log4j/|log4j]] benutzt. Dies ist zum Debugging im Java s0_logger implementier und muss daher mit installiert werden:+---- 
 +\\  
 +Für Debugging-Zwecke wird [[http://logging.apache.org/log4j/|log4j]] benutzt. Dies ist im Java s0_logger implementiert und muss daher mit installiert werden:
  
-<code>wget http://mirror.derwebwolf.net/apache/logging/log4j/2.0.2/apache-log4j-2.0.2-bin.tar.gz</code> +<code bash>wget http://mirror.derwebwolf.net/apache/logging/log4j/2.0.2/apache-log4j-2.0.2-bin.tar.gz</code> 
-<code>tar -xzf apache-log4j-2.0.2-bin.tar.gz && rm apache-log4j-2.0.2-bin.tar.gz</code> +<code bash>tar -xzf apache-log4j-2.0.2-bin.tar.gz && rm apache-log4j-2.0.2-bin.tar.gz</code> 
-<code>mv apache-log4j-2.0.2-bin/ /opt/log4j</code>+<code bash>mv apache-log4j-2.0.2-bin/ /opt/log4j</code>
  
 +----
 +\\ 
 Der Java s0_logger: Der Java s0_logger:
-<code>mkdir /opt/s0_logger</code> + 
-<code> wget java aplikattion</code> +{{:hardware:controllers:ferraris_rpi:s0.jar.zip|Hier (v2.9.1 22.09.14)}} gibt es die compilierte Java Routine zum Abfragen der GPIO Ports. 
-<code>ln -s /opt/log4j/log4j-1.2-api-2.0.2.jar /opt/log4j/log4j-api-2.0.2.jar /opt/log4j/log4j-core-2.0.2.jar /opt/s0_logger/+<code bash>mkdir /opt/s0_logger</code> 
 +<code bash>cd /opt/s0_logger</code> 
 +<code bash>wget http://wiki.volkszaehler.org/_media/hardware/controllers/ferraris_rpi/s0.jar.zip</code> 
 +<code bash>unzip s0.jar.zip</code> 
 +<code bash>ln -s /opt/log4j/log4j-1.2-api-2.0.2.jar /opt/log4j/log4j-api-2.0.2.jar /opt/log4j/log4j-core-2.0.2.jar /opt/pi4j/lib/pi4j-core.jar /opt/s0_logger/
 </code> </code>
  
 +----
 +\\ 
 Es müssen noch zwei Konfigurationsdateien im Verzeichniss "/opt/s0_logger/" angelegt werden: Es müssen noch zwei Konfigurationsdateien im Verzeichniss "/opt/s0_logger/" angelegt werden:
  
-config.properties+{{:hardware:controllers:ferraris_rpi:config.properties.zip|config.properties}} 
 <code> <code>
 ## SERVER eigener Volkszaehler Remote-Server !nicht localhost! ## SERVER eigener Volkszaehler Remote-Server !nicht localhost!
Zeile 84: Zeile 121:
 ## Hier sind die auszulesenden GPIO Ports zu aktivieren; der Port 0-7, aktiv 1 / inaktiv 0 ## Hier sind die auszulesenden GPIO Ports zu aktivieren; der Port 0-7, aktiv 1 / inaktiv 0
 gpio.ports=1,0,0,0,0,0,0 gpio.ports=1,0,0,0,0,0,0
- 
-## S0 Bezeichungen 
-s0.name=Verbraucher1, Verbraucher2, Verbraucher3, Verbraucher4, Verbraucher5, Verbraucher6, Verbraucher7 
  
 ##Hier sind die Impulse/kWh ein zu tragen ##Hier sind die Impulse/kWh ein zu tragen
 s0.impulse=500,1000,1200,300,700,1500,900 s0.impulse=500,1000,1200,300,700,1500,900
 +
 +#maximale Leistungen auf den Kanälen für Plausibilisierung in kW
 +s0.P_max=5.0,10,10,10,10,10,10,10
  
 ## S0 Volkszaehler UUID: Erzeugt über das Frontend des VZ, Typ S0-Impulse (z.B. Eklektrische Energie (S0-Impulse)) ## S0 Volkszaehler UUID: Erzeugt über das Frontend des VZ, Typ S0-Impulse (z.B. Eklektrische Energie (S0-Impulse))
Zeile 101: Zeile 138:
 s0.duration=100 s0.duration=100
 </code> </code>
 +\\ 
 +{{:hardware:controllers:ferraris_rpi:log4j2.xml.zip|
 +log4j2.xml}}
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?> 
 +        <Configuration status="debug"> 
 +        <Properties> 
 +                <Property name="log-path">logs</Property> 
 +        </Properties> 
  
-log4j.properties +        <Appenders>  
-<code+                <RollingFile name="file-log" fileName="${log-path}/S0-Logger-info.log" filePattern="${log-path}/S0-LoggerX-info-%d{yyyy-MM-dd}.log">  
-# Der Root-Logger hat den Level DEBUG +                        <PatternLayout>  
-log4j.rootLogger=ERROR, file+                                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>  
 +                        </PatternLayout>  
 +                        <Policies>  
 +                                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>  
 +                        </Policies>  
 +                </RollingFile> 
  
-# Konfiguration der Log-Datei +                <Console name="console" target="SYSTEM_OUT">  
-log4j.appender.file=org.apache.log4j.RollingFileAppender +                        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>  
- +                </Console>  
-## Ziel und Name ggf. anpassen! +        </Appenders>  
-log4j.appender.file.File=/var/log/log4j_S0.log +        <Loggers>  
-log4j.appender.file.MaxFileSize=300KB +                <Logger name="de.solarautonomie" level="info" additivity="false">  
- +                        <appender-ref ref="file-log" level="info"/>  
-# Eine Backup-Datei behalten +                </Logger>  
-log4j.appender.file.MaxBackupIndex=20 +                <Root level="info" additivity="false">  
- +                        <appender-ref ref="console"/>  
-log4j.appender.file.layout=org.apache.log4j.PatternLayout +                </Root>  
-log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c - %m%n+        </Loggers>  
 +</Configuration>
 </code> </code>
  
-Zum automatischen starten kann folgender Script verwendet und über den Cronjob aufgerufen werden: +<note tip>Mittels Log-Level „info“ können die Programmschritte im Einzelnen überwacht werden; per „error“ kann das auf Fehlermeldungen reduziert werden.</note> 
-startS0.sh +  
-<code>+---- 
 +\\  
 +Zum automatischen Starten kann folgendes Script verwendet und über den Cronjob aufgerufen werden:\\ 
 +\\  
 +{{:hardware:controllers:ferraris_rpi:starts0.sh.zip|startS0.sh}} 
 +<code bash>
 #!/bin/bash #!/bin/bash
 S0=$(pgrep -f "S0.jar" > /dev/null 2>&1 && echo "aktiv" || echo "inaktiv") S0=$(pgrep -f "S0.jar" > /dev/null 2>&1 && echo "aktiv" || echo "inaktiv")
  
- if  [ $S0 == inaktiv ]; +        if  [ $S0 == inaktiv ]; 
- then +          then 
- cd /opt/pi4j/lib/ +     java -Xmx64m -Djava.awt.headless=true -cp .:S0.jar:pi4j-core.jar:log4j-1.2-api-2.0.2.jar:log4j-api-2.0.2.jar:log4j-core-2.0.2.jar  de.solarautonomie.classS0_Sensor >S0-startup-log 2>&1 & 
- java -Xmx64m -Djava.awt.headless=true -classpath .:classes:/opt/pi4j/lib/'*' -cp .:S0.jar:log4j-core-2.0.2.jar:pi4j-core.jar  de.solarautonomie.classS0_Sensor >S0-startup-log 2>&1 & +        fi
- fi+
 </code> </code>
 +
 +<note important>
 +Also Startscript, log4j2.xml, config.properties und S0.jar liegen alle im gleichen Verzeichnis (/opt/s0_logger/).
 +</note>
  
 Ausführbar machen: Ausführbar machen:
-<code> chmod a+x startS0.sh</code>+<code bash> chmod a+x startS0.sh</code>
  
-crontabe Beispiel+crontab Beispiel
 <code> <code>
 @reboot root (cd /Verzeichniss/wo/start/Script_liegt && ./startS0.sh) @reboot root (cd /Verzeichniss/wo/start/Script_liegt && ./startS0.sh)
 </code> </code>
 ===== GPIO Anschluss ===== ===== GPIO Anschluss =====
-<note important>Hier muss noch eine Beschreibung zum Anschluss an den GPIO Port hin.</note>+ 
 +Der Ferrariszähler Lesekopf benötig eine Versorgungsspannung von 5V. Daher ist es nötig, den RJ12 Buchsenkontakt 2 mit dem PIN 2 der GPIO-Leiste zu Verbinden (+5V). Der RJ12 Buchsenkontakt 4 muss mit dem PIN 6 der GPIO-Leiste verbunden werden (Ground). 
 + 
 +Die CNY17 Ausgänge, RJ12 Buchsenkontakte 3 und 5, sind mit dem gewünschten GPIO-Port zu Verbinden. Wobei zu beachten ist, dass der RJ12 Buchsenkontakt 3 an das +3V Signal anzuschliesen ist und der RJ12 Buchsenkontakt 5 an einen der folgenden GPIO-Ports (=Ground): 
 + 
 +{{:hardware:controllers:ferraris_rpi:basic-gpio-layout.png?300 |}} 
 +^  GPIO Header  ^  GPIO Kanal\\ s0_logger 
 +|  11  |  1  | 
 +|  12  |  2  | 
 +|  13  |  3  | 
 +|  15  |  4  | 
 +|  16  |  5  |  
 +|  18  |  6  | 
 +|  22  |  7  | 
 +|  7  |  8  | 
 +{{:hardware:controllers:ferraris_rpi:gpio-pins.jpg?300 |}} 
 +^  RJ12 Buchse  ^  GPIO Header  ^  Ader\\ Flachbandkabel 
 +|  1  |  -  |  -  | 
 +|  2  |  +5V (2 / 4)  |  gelb  | 
 +|  3  |  +3V (1 / 17)  |  grün  | 
 +|  4  |  Ground (6 / 9 /\\ 14 / 20 / 25)  |  rot  | 
 +|  5  |  GPIO Kanal\\ s0_logger  |  braun  | 
 +|  6  |  -  |  -  | 
 +{{:hardware:controllers:ferraris_rpi:leiterplatte_rj12_ferraris_rpi.jpg?150 |}} Bild anklicken und vergrößern\\ um PIN Belegung zu sehen! 
 + 
 +===== Montage am Zähler ===== 
 + 
 +<note>Hier muss noch eine Beschreibung rein wie die Montage am Zähler erfolgt!</note> 
 ===== Bilder ===== ===== Bilder =====
-{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_01.jpg?nolink&300 |}} {{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_03.jpg?nolink&300 |}} +{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_01.jpg?nolink&300|}} 
-{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_02.jpg?nolink&300 |}}  +{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_03.jpg?nolink&300|}} 
-{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_04.jpg?nolink&300 |}}+\\  
 +{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_02.jpg?nolink&300|}} 
 +{{:hardware:controllers:ferraris_rpi:ferraris_lesekopf_rpi_04.jpg?nolink&300|}} 
 +\\  
 +{{:hardware:controllers:ferraris_rpi:lesekopf_an_zaehler.jpg?250|}}
hardware/controllers/ferrariszaehler_lesekopf_rpi_gpio.1410451737.txt.gz · Zuletzt geändert: 2014/09/11 18:08 von ronny_w