Sollog für Würth / SMA/ Diehl / SolarMax / Delta (Solarlogger)

Pololu

Mitglied
Mitglied seit
9 Jan 2010
Beiträge
542
Punkte für Reaktionen
2
Punkte
18
Hallo Oliver,
mit dem Freetz-1.1.3 ist es durchgelaufen.

Danke für die Unterstützung. :cool:

Ich möchte was zur Überwachung meiner Photovoltaikanlage bauen.

Etwas in der Art:

http://www.photovoltaikforum.com/datenlogger-f5/solarmax-datenlogger-t52179.html

Vielleicht kann man den Logger auf einen USB- Stick einer Fritzbox packen?

Oder den (ELV 1010) oder was ähnliches um den Zähler zu loggen.

Gibt es da schon Anleitungen bei Freetz?

Zur Temperaturbeobachtung hab ich eine Anwendung gesehen.

Weisst Du was ähnliches?
 
Zuletzt bearbeitet:
...
Gibt es da schon Anleitungen bei Freetz?
...
Hier >>> klick <<< ein Beispiel, wie Du "eigenen" C-Quellcode mit Freetz, zu einem binary compilieren kannst. Musst das Paket aber für dein Freetz-1.1.3 anpassen, da es für den trunk erstellt ist.
 
Danke für Dein Programm,
ich hab mir jetzt auch freetz-trunk geholt.

Wie bekomme ich denn Dein Programm installiert und zu laufen?

Bei Freetz mag es mal ein Modul für den Solar-logger gegeben haben. Ich kann es aber aktuell im Trunk nicht mehr finden. Die benutzten Wechselrichter sind auch zu unterschiedlich. Die Anbindung wäre dann jedesmal eine Andere.

Das ELV- 1010 wäre da universeller . Es tastet nur die rote Markierung der rotierenden Aluscheibe im Zähler ab.

Da gibt es eine Lösung mit cacti:

http://www.photovoltaikforum.com/datenlogger-f5/neue-Überwachungs-loggingmethode-my-way-t46566.html

Ich bin noch beim Suchen und weis noch nicht was ich machen soll. :confused:
 
...
ich hab mir jetzt auch freetz-trunk geholt.

Wie bekomme ich denn Dein Programm installiert und zu laufen?
...
Das Programm kannst Du wie folgt installieren und benutzen:
-im Wurzelverzeichnus des trunk den Patch ausführen:
Code:
[B]patch -p0 < renice.patch.txt[/B]
-in der Datei "make/Config.in" im menu "Testing", mit einem UNIX-Editor, folgenden Eintrag machen und die Datei speichern:
Code:
[B]source make/renice[/B]/Config.in
-in der Datei "make/external.in", mit einem UNIX-Editor, folgenden Eintrag machen und die Datei speichern:
Code:
[B]source make/renice/external.in[/B]
-mit "make menuconfig" das Paket "renice" aktivieren und das Freetz-Image mit "make" compilieren
-das Freetz-Image flashen
-in der Konsole der FritzBox das binary "renice" benutzen
-z. B.:
Code:
root@fritz:/var/mod/root# [B]renice -h[/B]
Usage:
 renice [-n] priority [-p|--pid] pid  [... pid]
 renice [-n] priority  -g|--pgrp pgrp [... pgrp]
 renice [-n] priority  -u|--user user [... user]
 renice -h | --help
 renice -v | --version
 
@sf3978: Um eigenen Quellcode mit freetz zu kompilieren, brauchst Du kein Rad neu erfinden: eigenen Quellcode unter make/$(paketname)/src ablegen und make/$(paketname)/$(paketname).mk mit folgendem Inhalt erstellen:
Code:
$(call PKG_INIT_BIN, myVersion)

$(PKG)_BINARY:=$($(PKG)_DIR)/myBinary
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/myBinary

$(PKG_LOCALSOURCE_PACKAGE)
$(PKG_CONFIGURED_NOP) bzw. $(PKG_CONFIGURED_CONFIGURE) (wobei das zweite weniger wahrscheinlich ist)

ab da wie jedes andere Paket

@Pololu: gilt alles nur für trunk, nicht für 1.1.3
 
@sf3978: Um eigenen Quellcode mit freetz zu kompilieren, brauchst Du kein Rad neu erfinden:
...
Sorry, aber das was Du hier postest ist für mich nicht verständlich, warum auch immer. Deshalb habe ich aus meiner Sicht, das Rad nicht neu erfunden.;)
Ich will den eigenen Quellcode ja nicht nur compilieren, sondern auch in Freetz integrieren.
 
Anscheined gibt es das Makro PKG_LOCALSOURCE_PACKAGE, mit dem man das Programm direkt in Freetz aufnehmen kann, anstatt es von Extern herunter zu laden. Genutzt wird es derzeit anscheinend nur für die Dateien in make/target-tester/src/.

Im Prinzip wäre dieser Mechanismus auch sinnvoll für die libfreetz, die ja auch als Bestandteil von freetz gilt. Vermutlich wird das dort aber nicht genutzt, weil der Mechanismus für die Libraries anders ist.
 
Ja, die Idee wäre, das Programm von zaglibu auf eine Fritzbox zu bringen.
Das kompilieren seines Quellcodes nach seiner Anleitung im PV-Forum funktioniert.

Leider hab ich keine Solarmax- Wechselrichter wie er und kann es nicht 1:1 übernehmen.

Ich hab mir das RRDstats , DigiTemp und USB-root auf meine Fritzbox installiert.
Das ging ja ganz einfach mit freetz-trunk. Ist auch ganz nett anzuschauen.

Aber zaglibus Logger macht mehr her . ;)

Ja, sf3978, renice hab ich jetzt eingerichtet.
Wo finde ich da eine Bedienungsanleitung? Wird wohl in Englisch abgehen. Naja. Danke jedenfalls für die Anleitung zum Installieren.

Oder kann ich nicht die Prozedur, die Du mir zum Einrichten des renice vorgegeben hast, analog auch für z.B. den Solarlogger benutzen? Bin jetzt etwas verwirrt.
 
Zuletzt bearbeitet:
...Ja, sf3978, renice hab ich jetzt eingerichtet.
Wo finde ich da eine Bedienungsanleitung? Wird wohl in Englisch abgehen. Naja. Danke jedenfalls für die Anleitung zum Installieren.

Oder kann ich nicht die Prozedur, die Du mir zum Einrichten des renice vorgegeben hast, analog auch für z.B. den Solarlogger benutzen? Bin jetzt etwas verwirrt.

Was meinst Du mit "Wo finde ich da eine Bedienungsanleitung?" Ich habe dir das Paket renice lediglich als Beispiel/Muster genannt, nach dem Du dein C-Quellcode compilieren könntest, wenn Du die erforderlichen Änderungen für dein Paket gemacht hast.
 
Ja, wenn ich das nochmal lese, kapiers ich auch.
Jedenfalls weis ich jetzt, wie ich Dein Beispiel auf die Box bringe. Danke.
Das outsourcen wird dann auch zu machen sein.

@er13: Aus Deiner Anleitung werd ich leider nicht schlau.
Weis nicht, was ich wo und wie eingeben soll.
Aber es scheint ja eh nicht auf mein Anliegen zuzutreffen.
 
Sorry, aber das was Du hier postest ist für mich nicht verständlich, warum auch immer.
Dann versuche ich es nochmal. Um den eigenen Quellcode als Paket in freetz zu integrieren, sind genau dieselben (nachdem Du so viele Pakete beigesteuert hast, Dir bestimmt schon bekannten) Schritte notwendig wie bei einem Paket, bei dem der Quellcode auf irgendeinem Server im Internet liegt. Der einzige Unterschied besteht darin, dass in der $(package).mk statt
Code:
$(call PKG_INIT_BIN, myVersion)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SOURCE_MD5:=0123456789ABCDEF0123456789ABCDEF
$(PKG)_SITE:=http://www.foo.bar

$(PKG)_BINARY:=$($(PKG)_DIR)/myBinary
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/myBinary

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_NOP)

folgende Macros zu verwenden sind:
Code:
$(call PKG_INIT_BIN, myVersion)

$(PKG)_BINARY:=$($(PKG)_DIR)/myBinary
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/myBinary

$(PKG_LOCALSOURCE_PACKAGE)
$(PKG_CONFIGURED_NOP)

Der eigene Quellcode ist dabei unter make/$(package)/src abzulegen.

@Ralf: Mit den Libraries wird es nicht funktionieren, weil sie momentan alle noch in einem und demselben Unterverzeichnis liegen. Wenn jede von den Libraries endlich mal ein eigenes Unterverzeichnis hat (rein aus Gründen der besseren Übersichtlichkeit), wird es auch bei diesen gehen.
 
Das war mir schon klar, wenn es vielleicht auch nicht so deutlich geworden ist. Mir ist nur aufgefallen, daß sich dieser Mechanismus bei der libfreetz anbieten würde, wenn man ihn nutzen könnte.
 
... Um den eigenen Quellcode als Paket in freetz zu integrieren, ...
Feine Sache mit dem Makro. Danke für den Hinweis und für die Erklärung. Seit wann ist dieses Makro im trunk? Im trunk rev. 3204, finde ich "PKG_LOCALSOURCE_PACKAGE" noch nicht in der "make/Makefile.in".

EDIT:

"PKG_LOCALSOURCE_PACKAGE" gibt es seit: 28.02.2010, 18:15:01, im trunk (d. h. trunk rev. 4381) von er13. (>>> klick <<<)

@Pololu
Im Anhang findest Du ein Patch für dein Paket "solarmax logger".
Code:
# sollog -h
sollog [1168] - program needs hostname, port, logfile and loginterval (in seconds) as parameters
 

Anhänge

  • sollog.patch.txt
    6.2 KB · Aufrufe: 34
Zuletzt bearbeitet:
Danke sf3978 für die Mühen.

Ich werd einen Link hierhin im PV- Forum reinstellen, denn das interessiert bestimmt viele PV- Betreiber und Bastler.

Der Vorteil der Fritzbox ist ja der, daß man keinen zusätzlichen PC braucht um die Daten zu loggen, da die Box ja eh läuft.

Ich blick mit der Datenbank und der Anbindung an meinen Würth- Wechselrichter noch nicht wirklich durch. Mein Wechselrichter ist zwar fast baugleich mit den Solarmäxen, hat aber nur eine RS 485- Schnittstelle, wobei ich zudem nicht weis wie der Datenverkehr abläuft.

Ich beschäftige mich momentan mit Freetz und versuche rauszukriegen, wie ich die Box mit dem USB- Stick betreiben kann. Das Aufspielen der verschiedenen Module geht ja sehr leicht und es macht zunehmend Spaß.

Mal schaun, was zaglibu sagt. :cool:
 
...
Ich blick mit der Datenbank und der Anbindung an meinen Würth- Wechselrichter noch nicht wirklich durch. ...
Ich beschäftige mich momentan mit Freetz und versuche rauszukriegen, wie ich die Box mit dem USB- Stick betreiben kann. ...
Ich habe in das Paket (Patch) den Quellcode ohne mysql genommen. D. h. es wird in eine Textdatei geloggt, die sich auf einem externen Datenträger (z. B. USB-Stick) befinden sollte.
 
Sollog für Würth a6000

Hallo sf3978,
das kompilieren nach Deiner Anleitung hat ganz gut funktioniert.
Da das Programm ja für den Solarmax und nicht für den Würth ist, hab ich es etwas umgeschrieben.
Auf meinem PC geht es.
Ich hab es auch versucht, für die Fritzbox zu patchen. Aber da hab ich noch Schwierigkeiten.
Anbei die Fehlermeldung und mein Code.
Code:
erwinruhl@PC-2400:~/Desktop/freetz-trunk$ make
cd make/renice && \
	tar -vczf renice-0.1.tar.gz renice-0.1/{renice.c,nls.h,Makefile}
renice-0.1/renice.c
renice-0.1/nls.h
renice-0.1/Makefile
mv make/renice/renice-0.1.tar.gz \
	/home/erwinruhl/Desktop/freetz-trunk/dl/renice-0.1.tar.gz
cd /home/erwinruhl/Desktop/freetz-trunk
---> package/renice: preparing... tar -C source/target-mipsel_uClibc-0.9.29  -xzf dl/renice-0.1.tar.gz
set -e; shopt -s nullglob; for i in make/renice/patches/*.patch; do tools/freetz_patch source/target-mipsel_uClibc-0.9.29/renice-0.1 $i; done
cmd() { PATH="/home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin:/home/erwinruhl/Desktop/freetz-trunk/toolchain/kernel/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } }; 	if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/target-mipsel_uClibc-0.9.29/renice-0.1 \
		CC="/home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc -ansi" \
		CFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
building... make[1]: Betrete Verzeichnis '/home/erwinruhl/Desktop/freetz-trunk/source/target-mipsel_uClibc-0.9.29/renice-0.1'
/home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc -ansi -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64    renice.c   -o renice
make[1]: Verlasse Verzeichnis '/home/erwinruhl/Desktop/freetz-trunk/source/target-mipsel_uClibc-0.9.29/renice-0.1'
mkdir -p packages/target-mipsel_uClibc-0.9.29/renice-0.1/root/usr/bin/; cp source/target-mipsel_uClibc-0.9.29/renice-0.1/renice packages/target-mipsel_uClibc-0.9.29/renice-0.1/root/usr/bin/renice; /home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-strip --remove-section={.comment,.note,.pdr} packages/target-mipsel_uClibc-0.9.29/renice-0.1/root/usr/bin/renice;
done.
cmd() { PATH="/home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin:/home/erwinruhl/Desktop/freetz-trunk/toolchain/kernel/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } }; 	if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/target-mipsel_uClibc-0.9.29/sollog3-0.1 \
		CC="/home/erwinruhl/Desktop/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc" \
		CFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
make[1]: Betrete Verzeichnis '/home/erwinruhl/Desktop/freetz-trunk/source/target-mipsel_uClibc-0.9.29/sollog3-0.1'
make[1]: *** Keine Regel vorhanden, um das Target »sollog3«, 
  benötigt von »all«, zu erstellen.  Schluss.
make[1]: Verlasse Verzeichnis '/home/erwinruhl/Desktop/freetz-trunk/source/target-mipsel_uClibc-0.9.29/sollog3-0.1'

ERROR: Build failed.
make: *** [source/target-mipsel_uClibc-0.9.29/sollog3-0.1/sollog3] Fehler 1
erwinruhl@PC-2400:~/Desktop/freetz-trunk$

was mach ich falsch?
Ich hab halt meinen Code in Deine Vorlage einkopiert und an den Namen eine 3 angehängt.
 

Anhänge

  • sollog3.patch.txt
    8.4 KB · Aufrufe: 3
...
was mach ich falsch?
Ich hab halt meinen Code in Deine Vorlage einkopiert und an den Namen eine 3 angehängt.
Du musst dann auch Änderungen an allen Dateien im Paket, die "sollog" und/oder "SOLLOG" bzw. sollog.c beinhalten, machen.
"make/Config.in" und "make/external.in" nicht vergessen.
 
Du musst deine source code-Datei "sollog2.c" umbenennen in "sollog3.c" und in dieser umbenannten source code-Datei "sollog3.c", fehlen noch die letzten 3 Zeilen (125, 126 und 127):
Code:
}
	 return (0);
   }
Diese 3 Zeilen musst Du ergänzen und dann funtioniert das Compilieren:
Code:
:~/myfreetz/freetz6039/freetz-trunk> [B][COLOR="Red"]make sollog3-precompiled[/COLOR][/B]
---> package/sollog3: preparing... mkdir -p source/target-mipsel_uClibc-0.9.29/sollog3-0.1
cp -a make/sollog3/src/Makefile make/sollog3/src/sollog3.c make/sollog3/src/sollog3.c~ source/target-mipsel_uClibc-0.9.29/sollog3-0.1
cmd() { PATH="/home/gm/myfreetz/freetz6039/freetz-trunk/toolchain/target/bin:/home/gm/myfreetz/freetz6039/freetz-trunk/toolchain/kernel/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };      if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/target-mipsel_uClibc-0.9.29/sollog3-0.1 \
                CC="/home/gm/myfreetz/freetz6039/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc" \
                CFLAGS="-Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
building... make[1]: Entering directory `/home/gm/myfreetz/freetz6039/freetz-trunk/source/target-mipsel_uClibc-0.9.29/sollog3-0.1'
/home/gm/myfreetz/freetz6039/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc -Os -pipe -march=4kc -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64    sollog3.c   -o sollog3
make[1]: Leaving directory `/home/gm/myfreetz/freetz6039/freetz-trunk/source/target-mipsel_uClibc-0.9.29/sollog3-0.1'
mkdir -p packages/target-mipsel_uClibc-0.9.29/sollog3-0.1/root/usr/bin/; cp source/target-mipsel_uClibc-0.9.29/sollog3-0.1/sollog3 packages/target-mipsel_uClibc-0.9.29/sollog3-0.1/root/usr/bin/sollog3; /home/gm/myfreetz/freetz6039/freetz-trunk/toolchain/target/bin/mipsel-linux-uclibc-strip --remove-section={.comment,.note,.pdr} packages/target-mipsel_uClibc-0.9.29/sollog3-0.1/root/usr/bin/[COLOR="Red"]sollog3[/COLOR];
[COLOR="Red"]done.[/COLOR]
 
Danke für Deine Unterstützung.
Ich probier schon den ganzen Tag und find den Fehler nicht.
Ja, einmal hatte ich den 3- er übersehen , einzufügen.
Es wäre sehr nett von Dir, die funktionierende Datei anzuhängen.
Dann könnte ich von einer Basis ausgehen.
Wenn ich nicht jedes mal die Namen ändern müsste, wäre auch eine Erleichterung. Beim Einpatchen komm ich mit den Hinweisen nicht klar.
Ich würde gerne die Dateien ändern und dann kompilieren versuchen.
Er schreibt, es wäre eine bestehende Version da.
Dann überspringt er was und ich denke er führt die Änderungen nicht aus.
Deinen sollog hab ich grad kompiliert, ging einwandfrei.

Ist jetzt durchgelaufen.
Komischerweise war der abgelegte Code in make/sollog3/src nur zur Hälfte abgelegt. Hab die andere Hälfte reinkopiert und dann gings.

Danke
 
Zuletzt bearbeitet:
Im Anhang der Patch für sollog3, so wie er bei mir funktioniert:

Code:
:~/myfreetz/freetz6124/freetz-trunk> patch -p0 < sollog3.patch.txt
patching file make/sollog3/Config.in
patching file make/sollog3/external.files
patching file make/sollog3/external.in
patching file make/sollog3/Makefile.in
patching file make/sollog3/sollog3.mk
patching file make/sollog3/src/Makefile
patching file make/sollog3/src/sollog3.c

EDIT:
Vor dem Patchen musst Du den Ordner "make/sollog3" aus deinem Build-System löschen.
 

Anhänge

  • sollog3.patch.txt
    6.1 KB · Aufrufe: 5
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.