[vz-users] LadereglerWerte aus Morningstar MPPT in Volkszähler

Thorben Thuermer r00t at constancy.org
Tue Jan 8 10:10:17 CET 2013


On Tue, 8 Jan 2013 08:57:18 +0100 Manfred Frank <info at mmm-frank.de> wrote:
> Hallo,
> leider bin ich der Linux Anfänger der sich erstmals auf unbekanntes Eis begibt.
> Ich habe zwar schon ein paar Linux Dateien verändert  ..aber das wars dann aber auch.

du machst dir das ganze VIEL zu umstaendlich.
wie gehabt, du belaesst das vorhandene C-programm einfach wie es ist.
du rufst es aus dem shellscript auf,
und aus der ausgabe extrahierst du den wert den du haben willst.
wenn du uns einmal die ausgabe schickst,
koennen wir dir die losung dafuer geben.


trotzdem nochmal zu deinen fragen...

> Deshalb hab ich mit diesem Projekt so meine Probleme:
> Wie krieg ich den Wert in eine Datei, und dann wieder raus.
> 
> 1. in C 
> f=fopen("/root/test.c", "w");
> fputs ("adc_vb_f"=adc_vb_f  , f);     ****was muss hier rein damit in der Datei dann steht:  adc_vb_f=51
> sunsaver.c:453: error: assignment of read-only location â"adc_vb_f"â

in C gibt es keine implizite string-konkatenation, und noch weniger
typenkonvertierung.
du versuchst, den string "adc_vb_f" und den wert der variablen adc_vb_f
auszugeben. zum einen kannst du die nicht einfach so verketten,
zum anderen muss die variable erst in eine string-darstellung konvertiert
werden.
zudem steht das gleichheitszeichen ausserhalb der anfuehrungszeichen,
damit versuchst du, den wert der variablen der string-konsten zuzuweisen,
und die ist read-only.

die loesung waehre in etwa:
fprintf(f,"adc_vb_f=%f\n",adc_vb_f);
wobei man noch wissen muesste, welchen typ die variable hat.

> 2. im  /bin/bash
> u="f097b770-53ef-11e2-8947-6f64b65c053f"
> cat /root/test.c |grep adc_vb_f=$z

das ist auch voelliger unfug.
grep sucht zeilen die auf eine expression matchen aus einer datei,
und gibt diese aus.
grep kann keinen wert aus der datei einer variablen zuweisen.

korrekt waehre:
z=$(cat /root/test.c)

> XXXX  *****was muss hier rein damit aus z (adc_vb_f=51)  nur noch x=51 wird  

zB. mittels des parameter-expansion features der shell:
x=${z/*=/}

> curl --silent --data "" "http://192.168.2.101/middleware.php/data/$u.json?value=$x"
> 
> Manfred

- Thorben

> -----Ursprüngliche Nachricht-----
> Von: volkszaehler-users-bounces at lists.volkszaehler.org [mailto:volkszaehler-users-bounces at lists.volkszaehler.org] Im Auftrag von Thorben Thuermer
> Gesendet: Montag, 7. Januar 2013 19:53
> An: volkszaehler-users at lists.volkszaehler.org
> Betreff: Re: [vz-users] LadereglerWerte aus Morningstar MPPT in Volkszähler
> 
> On Mon, 7 Jan 2013 19:43:27 +0100 Manfred Frank wrote:
> > Das ist ja schon mal super
> > 
> > der erste Teil klappt schon mal...  (Variable im http Aufruf) , aber 
> > halt leider nur in  /bin/bash u="f097b770-53ef-11e2-8947-6f64b65c053f"
> > x=$Power_out
> > curl --silent --data "" 
> > http://192.168.2.101/middleware.php/data/$u.json?value=$x
> > 
> > wie krieg ich das Ganze nun noch in ein Java Script rein?
> > Kann mir Dabei jemand behilflich sein?
> > http://rosebud.homedns.org/solar/sunsaver.tar.gz
> > 
> > Aber hier mal ein Auszug:
> > #include <stdio.h>
> 
> das programm ist aber C und nicht javascript...
> 
> in das programm dann noch einen http-client einzubauen wollen wir dir glaube ich nicht erklaeren...
> der einfachere und naheliegendere weg ist, mittels eines shellscripts aus der ausgabe des vorhandenen programms den wert den du brauchst herauszufiltern den du brauchst, und dann wie gehabt perl curl/wget an die middleware zu senden.
> 
> dafuer gibst du uns am besten einmal die ausgabe des programms.
> 
> > LG
> > Manfred
> 
> - T.
> 
> > Von: W3ll Schmidt
> > Gesendet: Montag, 7. Januar 2013 16:58
> > An: volkszaehler.org - users
> > Betreff: Re: [vz-users] LadereglerWerte aus Morningstar MPPT in 
> > Volkszähler
> > 
> > Kannste Dir hier klauen ...
> > 
> > #!/bin/bash
> [...]
> > test -z "$t" || curl --silent --data "" "http://localhost/middleware.php/data/$u.json?value=$t"
> > 
> > Am 7. Januar 2013 16:29 schrieb Manfred Frank 
> > Hallo,
> > 
> > ich möchte ein Script erstellen das es mir ermöglicht,  den  aktuelle Laderegler  Wert
> >       " Power_out"  an den Volkszähler (bei mir 192.168.2.101) zu 
> > übermitteln
> > 
> > der crontab startet dieses Programm alles 5 min leite scheitere ich an 
> > 2 Dingen.
> > curl -sL 
> > http://192.168.2.101/middleware.php/data/f097b770-53ef-11e2-8947-6f64b
> > 65c053f.json?operation=add&value=1000
> > wenn ich dies so eintrage,  erscheint immer der Wert 1  web frontend
> > 
> > 2. wie trag ich grundsätzlich in so eine Befehlszeile eine Variable 
> > ein z.B.
> > curl -sL http://192.168.2.101/middleware.php/data/f097b770-53ef-11e2-8947-6f64b65c053f.json?operation=add&value=Power_out
> > Kann mir jemand dabei behilflich sein...   Ich stelle dann das "Gesamtwerk" auch gerne zur Verfügung
> > 
> > Danke
> > Manfred


More information about the volkszaehler-users mailing list