Ga naar inhoud


Aanbevolen berichten

Geplaatst:

Oeps, foutje, ik lees constant dezelfde waarden uit, niet goed dus, overnieuw CON!!

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.


  • Reacties 88
  • Aangemaakt
  • Laatste reactie

Beste reacties in dit onderwerp

Beste reacties in dit onderwerp

Geplaatst:

Post nog eens je volledige script?

Mogelijk wis je de 'templog' niet en wordt deze steeds aangevuld met behulp van de ">>" functie.

 

Als je dan nadien uitleest en steeds tot de eerste 18 lijnen gaat, dan klopt dit fenomeen wel.

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Geplaatst: (aangepast)

Sorry, zit op mijn tablet te knoeien, kan het niet in code neerzetten.

 

 

#!/bin/sh

 

#variabelen in gebruik

tempfile=p1_tmp.txt

logfile=p1.txt

 

#check of er reeds een temp-log bestaat; indien er al één was met size > 0 delete hem dan!

#if [ -s $tempfile ]

#then

# rm -f $tempfile

#fi

#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand

(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#variable aanmaken om process ID in te stoppen

#wordt even niet gebruikt dus mee in commentaar

#vPiD=$$

 

#maak een var 'counter' en zet deze op 0

ctr=0

 

#lees de temp-log uit

while read line

do

#Indien de teller < 16 zullen we de lijn toevoegen aan de grote logfile

if [ $ctr -lt 18 ]

then

#verhoog ctr met 1

ctr=$((ctr+1))

#schrijf lijn naar grote log

# echo $line >> $logfile

if echo "$line" | grep -q "2.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi

if echo "$line" | grep -q "1.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi

if echo "$line" | grep -q "1.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi

if echo "$line" | grep -q "2.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi

if echo "$line" | grep -q "2.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi

if echo "$line" | grep -q "1.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi

#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven

if [ $ctr -eq 18 ] ; then echo " Tijdstip: " $(date +%T)"," >> $logfile ; fi

#voeg blanco regel (\n) tijdstip aan log

elif [ $ctr -gt 18 ]

then

#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen

#eerst het achtergrond proces terug naar de voorgrond brengen

fg

#dan afsluiten door de input te sturen met xdotool

xdotool key ~.

fi

done < $tempfile

 

 

#sluit script af

 

exit 0

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

Inderdaad, die tmp file wordt niet leeggehaald.

Ik heb het nog geprobeerd met ipv >> alleen > toe te passen

maar dan was ik ineens de tijd kwijt en werd alles achter elkaar gezet.

 

Ik heb een probleem, morgen weer om 5:30 op....

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

met '>>' doe je een append aan een bestaande file; met een '>' schrijf je weg maar vervang je de bestaande inhoud.

 

makkelijkste is om eerst te kijken of er al een tempfile is die groter is dan 0 qua filesize en deze dan te verwijderen.

if [ -s $tempfile ]
 then
 rm -f $tempfile
fi

Even die 4 lijntjkes uncommenten :)

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Geplaatst:

Ganiegoe;

 

pi@raspberrypi ~ $ ./bassie4.sh

./bassie4.sh: 23: ./bassie4.sh: cannot open p1_tmp.txt: No such file

pi@raspberrypi ~ $ cu: End of file on terminal

cu: child: Got signal 9

 

pi@raspberrypi ~ $

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

Vraagje tussendoor.

 

Hoe weet;

"while read line"

in welk van de 2 bestanden moet worden gelezen?

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

Vraagje tussendoor.

Hoe weet;
"while read line"
in welk van de 2 bestanden moet worden gelezen? 

Zelf al ontdekt, met done < $tempfile

 

Maar goed, volgens mij werkt het nu wél.

Eerst heb ik de file p1_tmp.txt leeggemaakrt met echo "" > p1_tmp.txt

Vervolgens heb ik er een soort csv file van gemaakt,

dus komma gescheiden met de tijd als eerste.

 

Verder heb ik gezorgd dat de meterstanden tegen

de tijd kwamen te staan en niet een regel lager.

echo "\nTijdstip: "$(date +%T",\c") >> $logfile

\c zorgde daar voor.

 

Ik denk trouwens dat;

elif [ $ctr -gt 18 ]
then
gewijzigd kan worden in else
 
Maar goed, hier het script en daarna het resultaat.
#!/bin/sh

#variabelen in gebruik
tempfile=p1_tmp.txt
logfile=p1.txt
echo "" > p1_tmp.txt
#check of er reeds een temp-log bestaat; indien er al één was met size > 0 delete hem dan!
#if [ -s $tempfile ]
#then
#  rm -f $tempfile
#fi
#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#variable aanmaken om process ID in te stoppen
#wordt even niet gebruikt dus mee in commentaar
#vPiD=$$

#maak een var 'counter' en zet deze op 0
ctr=0

echo "\nTijdstip: "$(date +%T",\c") >> $logfile

#lees de temp-log uit
while read line
do
	#Indien de teller < 18 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf 6 lijnen naar grote log
		if echo "$line" | grep -q "2.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi
		if echo "$line" | grep -q "1.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi
		if echo "$line" | grep -q "1.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "1.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "2.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "2.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
#		if [ $ctr -eq 18 ] ; then printf " Tijdstip: " $(date +%T)"\n" >> $logfile ; fi
		#voeg blanco regel (\n) tijdstip aan log
	elif [ $ctr -gt 18 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

#sluit script af

exit 0

Tijdstip: 16:04:31,03305.957,02208.646,00979.745,02320.394,0000.00,0000.13,
Tijdstip: 16:06:31,03305.957,02208.646,00979.745,02320.404,0000.00,0000.53,
Tijdstip: 16:07:31,03305.957,02208.646,00979.745,02320.413,0000.00,0000.51,
Tijdstip: 16:09:31,03305.957,02208.646,00979.745,02320.430,0000.00,0000.52,
Tijdstip: 16:10:31,03305.957,02208.646,00979.745,02320.439,0000.00,0000.49,
Tijdstip: 16:11:31,03305.957,02208.646,00979.745,02320.447,0000.00,0000.48,
Tijdstip: 16:12:31,03305.957,02208.646,00979.745,02320.455,0000.00,0000.49,
Tijdstip: 16:13:32,03305.957,02208.646,00979.745,02320.464,0000.00,0000.50,
Tijdstip: 16:14:31,03305.957,02208.646,00979.745,02320.472,0000.00,0000.42,
Tijdstip: 16:15:31,03305.957,02208.646,00979.745,02320.479,0000.00,0000.41,
Tijdstip: 16:16:31,03305.957,02208.647,00979.745,02320.486,0000.00,0000.34,
Tijdstip: 16:17:31,03305.957,02208.647,00979.745,02320.492,0000.00,0000.34,
Tijdstip: 16:18:32,03305.957,02208.647,00979.745,02320.501,0000.00,0000.51,
Tijdstip: 16:19:31,03305.957,02208.647,00979.745,02320.507,0000.00,0000.33,
Tijdstip: 16:20:31,03305.957,02208.647,00979.745,02320.513,0000.00,0000.39,
Tijdstip: 16:21:31,03305.957,02208.647,00979.745,02320.521,0000.00,0000.54,
Tijdstip: 16:22:31,03305.957,02208.647,00979.745,02320.530,0000.00,0000.58,
Tijdstip: 16:23:31,03305.957,02208.647,00979.745,02320.540,0000.00,0000.54,
Tijdstip: 16:24:32,03305.957,02208.647,00979.745,02320.549,0000.00,0000.49,
Tijdstip: 16:25:31,03305.957,02208.647,00979.745,02320.556,0000.00,0000.42,

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

Ganiegoe;

 

pi@raspberrypi ~ $ ./bassie4.sh

./bassie4.sh: 23: ./bassie4.sh: cannot open p1_tmp.txt: No such file

pi@raspberrypi ~ $ cu: End of file on terminal

cu: child: Got signal 9

 

pi@raspberrypi ~ $

 

fout trad op op lijn 23

 

 

Vraagje tussendoor.

Hoe weet;

"while read line"

in welk van de 2 bestanden moet worden gelezen? 

Zelf al ontdekt, met done < $tempfile

 

Maar goed, volgens mij werkt het nu wél.

Eerst heb ik de file p1_tmp.txt leeggemaakrt met echo "" > p1_tmp.txt

Vervolgens heb ik er een soort csv file van gemaakt,

dus komma gescheiden met de tijd als eerste.

 

Verder heb ik gezorgd dat de meterstanden tegen

de tijd kwamen te staan en niet een regel lager.

echo "\nTijdstip: "$(date +%T",\c") >> $logfile

\c zorgde daar voor.

 

Ik denk trouwens dat;

elif [ $ctr -gt 18 ]

then

gewijzigd kan worden in else

 

Maar goed, hier het script en daarna het resultaat.

 

#!/bin/sh

#variabelen in gebruik
tempfile=p1_tmp.txt
logfile=p1.txt
echo "" > p1_tmp.txt
#check of er reeds een temp-log bestaat; indien er al één was met size > 0 delete hem dan!
#if [ -s $tempfile ]
#then
#  rm -f $tempfile
#fi
#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#variable aanmaken om process ID in te stoppen
#wordt even niet gebruikt dus mee in commentaar
#vPiD=$$

#maak een var 'counter' en zet deze op 0
ctr=0

echo "\nTijdstip: "$(date +%T",\c") >> $logfile

#lees de temp-log uit
while read line
do
	#Indien de teller < 18 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf 6 lijnen naar grote log
		if echo "$line" | grep -q "2.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi
		if echo "$line" | grep -q "1.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi
		if echo "$line" | grep -q "1.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "1.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "2.8.1" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		if echo "$line" | grep -q "2.8.2" ; then printf `expr substr $line 11 9`"," >> $logfile; fi
		#Na het lezen van de laatste lijn, willen we de tijd nog wegschrijven
#		if [ $ctr -eq 18 ] ; then printf " Tijdstip: " $(date +%T)"\n" >> $logfile ; fi
		#voeg blanco regel (\n) tijdstip aan log
	elif [ $ctr -gt 18 ]
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

#sluit script af

exit 0

Tijdstip: 16:04:31,03305.957,02208.646,00979.745,02320.394,0000.00,0000.13,
Tijdstip: 16:06:31,03305.957,02208.646,00979.745,02320.404,0000.00,0000.53,
Tijdstip: 16:07:31,03305.957,02208.646,00979.745,02320.413,0000.00,0000.51,
Tijdstip: 16:09:31,03305.957,02208.646,00979.745,02320.430,0000.00,0000.52,
Tijdstip: 16:10:31,03305.957,02208.646,00979.745,02320.439,0000.00,0000.49,
Tijdstip: 16:11:31,03305.957,02208.646,00979.745,02320.447,0000.00,0000.48,
Tijdstip: 16:12:31,03305.957,02208.646,00979.745,02320.455,0000.00,0000.49,
Tijdstip: 16:13:32,03305.957,02208.646,00979.745,02320.464,0000.00,0000.50,
Tijdstip: 16:14:31,03305.957,02208.646,00979.745,02320.472,0000.00,0000.42,
Tijdstip: 16:15:31,03305.957,02208.646,00979.745,02320.479,0000.00,0000.41,
Tijdstip: 16:16:31,03305.957,02208.647,00979.745,02320.486,0000.00,0000.34,
Tijdstip: 16:17:31,03305.957,02208.647,00979.745,02320.492,0000.00,0000.34,
Tijdstip: 16:18:32,03305.957,02208.647,00979.745,02320.501,0000.00,0000.51,
Tijdstip: 16:19:31,03305.957,02208.647,00979.745,02320.507,0000.00,0000.33,
Tijdstip: 16:20:31,03305.957,02208.647,00979.745,02320.513,0000.00,0000.39,
Tijdstip: 16:21:31,03305.957,02208.647,00979.745,02320.521,0000.00,0000.54,
Tijdstip: 16:22:31,03305.957,02208.647,00979.745,02320.530,0000.00,0000.58,
Tijdstip: 16:23:31,03305.957,02208.647,00979.745,02320.540,0000.00,0000.54,
Tijdstip: 16:24:32,03305.957,02208.647,00979.745,02320.549,0000.00,0000.49,
Tijdstip: 16:25:31,03305.957,02208.647,00979.745,02320.556,0000.00,0000.42,

Ziet er inderdaad goed uit.

 

Maar hoe weet je nou wanneer de uitlezing was? Want je hebt wel het tijdstip maar niet de datum.

;)

 

 

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

  • Moderator
Geplaatst:

ik neem gemakshalve aan dat je deze gegevens wilt om er een grafiek van te maken. De meeste monitor oplossingen die ik ken halen elke 5 minuten een waarde op. Heb jij echt elke 30 secondes die waardes nodig?

VU+ Duo4kSe  met VTi    VU+ duo2 met VTi 

Triax 78, astra 1,2,3, HB

Geplaatst: (aangepast)

De_perre, inderdaad ik moet het format ng ff aanpassen, iets van %D %M ofzo.

Ik had dit in principe al, alleen de %T vond ik voorlopig mooi genoeg..

 

wiz, (dank je) uiteraard, ik maak nu al anderhalf jaar prachtige grafieken hiervan.

Maar de grootste hobbel komt nog. Ik moet ook mijn inverter uitlezen.

En deze twee (de meter en de inverter) kruisbestuiven.

 

wiz, omdat er meetverschillen soms ontstaan wil ik zelfs naar de 10

seconden, maar daar later over meer als je daar interesse in hebt.

 

Beide, het verbaasd mij wat je allemaal in Python nodig hebt voor

modules, imports en noem maar op. En met bash-script niets van dat alles.

 

Ik hoopte daarom ook dat een bashscript probleemloos ging werken en dat ik

dan eindelijk van mijn overruns afben als ik het huidige Python-script

niet meer nodig heb.

 

De volgende stap is voorlopig redelijk simpel, ik moet van de strings

integers maken, normaal is dat eenvoudig maar ik zag al een string die

000.01 ofzo was. Want ik wil naar een 100% CSV toe met getallen.

 

Ik overweeg ook nog een procedure omdat ik 6 keer dezelfde handeling

moet doen en kun je dan beter in een procedure zetten. Maar dat is

weer nieuw voor mij, althans in de linux-wereld.

 

Vind het allemaal wel erg leuk maar wel slopend, ik kom slaap te kort. :)

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst:

Indien je met 6 dezelfde handelingen volgende bedoeld:

if echo "$line" | grep -q "2.7.0" ; then printf `expr substr $line 11 7`"," >> $logfile; fi

tja, dan zou je inderdaad een procedure kunnen verzinnen waarbij je 3 parameters/argumenten opgeeft:

#!/bin/sh

#variabelen in gebruik
tempfile=p1_tmp.txt
logfile=p1.txt

fn_write2log()
{
#om deze op te roepen moeten we 3 paramters opgeven
#$1 = de waarde om te zoeken met grep
#$2 = start positie van substring functie
#$3 = lengte van de substring

	if echo "$line" | grep -q $1 ; then printf `expr substr $line $2 $3`"," >> $logfile; fi
}




#Maak een nieuwe blanco log
echo "" > p1_tmp.txt


#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#maak een var 'counter' en zet deze op 0
ctr=0

#Schrijf tijdstip in bestaande log
echo "\nTijdstip: "$(date +%T",\c") >> $logfile

#lees de temp-log uit
while read line
do
	#Indien de teller < 18 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf 6 lijnen naar grote log
		fn_write2log "2.7.0" 11 7
		fn_write2log "1.7.0" 11 7
		fn_write2log "1.8.1" 11 9
		fn_write2log "1.8.2" 11 9
		fn_write2log "2.8.1" 11 9
		fn_write2log "2.8.2" 11 9
		
	else
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

#sluit script af
exit 0

conversie in jouw log van string naar decimal zou normaal niet nodig moeten zijn denk ik.

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Geplaatst: (aangepast)

Ik heb het nog iets gewijzigd, de strings naar waarden, van 000.0034 naar 0.0034  met printf "%.3f," maar blijf op 2 zaken hangen.

 

Op de eerste plaats wil ik de waarden ook nog met 1000 vermenigvuldigen en het is zonde als je 6 x de waarde 11 meegeeft.

Daar heb ik nu een slordige 8 uur ingestoken maar kwam niet tot een oplossing.

printf "%.3f," `expr substr $line $2 $3` >> $logfile (zaken als "\*" "1000" brachten geen soelaas)

Deze 11 bedoel ik; log "2.7.0" 11 7

 
 
Dit is nu het resultaat;
2015-06-13 17:27:36,3308.584,2209.995,986.027,2321.022,0.000,0.100,
aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds november 2023 glasvezel via Solcon (voor het laatst).

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

PC: Intel Nuc i7 met W11. Laptop Thinkpad met W11.

Asus Gigabyte Home Assistant, 20 Shelly's en 2 ESP-tjes en Zigbee.

Geplaatst: (aangepast)

Om je probleem met de 11 op te vangen, kan je ze hardcoden op de lijn; moet je echter wel maar 2 parameters meer meegeven:

 

#!/bin/sh

#variabelen in gebruik
tempfile=p1_tmp.txt
logfile=p1.txt

fn_write2log()
{
#om deze op te roepen moeten we 2 paramters opgeven
#$1 = de waarde om te zoeken met grep
#$2 = lengte van de substring

	if echo "$line" | grep -q $1 ; then printf "%.3f,"  `expr substr $line 11 $2`"," >> $logfile; fi
}




#Maak een nieuwe blanco log
echo "" > p1_tmp.txt


#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#maak een var 'counter' en zet deze op 0
ctr=0

#Schrijf tijdstip in bestaande log
echo "\nTijdstip: "$(date +%T",\c") >> $logfile

#lees de temp-log uit
while read line
do
	#Indien de teller < 18 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf 6 lijnen naar grote log
		fn_write2log "2.7.0" 7
		fn_write2log "1.7.0" 7
		fn_write2log "1.8.1" 9
		fn_write2log "1.8.2" 9
		fn_write2log "2.8.1" 9
		fn_write2log "2.8.2" 9
		
	else
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

#sluit script af
exit 0

 

Indien je zou willen rekenen, zul je nog iets anders te werk moeten gaan...

De normale string schrijven zit er nog even in als comment:

#!/bin/sh

#variabelen in gebruik
tempfile=p1_tmp.txt
logfile=p1.txt

fn_write2log()
{
#om deze op te roepen moeten we 2 paramters opgeven
#$1 = de waarde om te zoeken met grep
#$2 = lengte van de substring

	#Standaard string wegschrijven
	#if echo "$line" | grep -q $1 ; then printf "%.3f,"  `expr substr $line 11 $2`"," >> $logfile; fi
	#berekende waarde wegschrijven
	if echo "$line" | grep -q $1 
	 then 
	 value=$(printf "%.3f,"  `expr substr $line 11 $2` ) 
	 let valueX=$value \* 1000
	 echo $valueX"," >> $logfile
	fi
	
}




#Maak een nieuwe blanco log
echo "" > p1_tmp.txt


#start uitlezen en stuur naar de achtergrond; log naar tijdelijk bestand
(cu -l /dev/P1meter -s 9600 --parity=none >> $tempfile)&

#maak een var 'counter' en zet deze op 0
ctr=0

#Schrijf tijdstip in bestaande log
echo "\nTijdstip: "$(date +%T",\c") >> $logfile

#lees de temp-log uit
while read line
do
	#Indien de teller < 18 zullen we de lijn toevoegen aan de grote logfile
	if [ $ctr -lt 18 ]
	then
		#verhoog ctr met 1
		ctr=$((ctr+1))
		#schrijf 6 lijnen naar grote log
		fn_write2log "2.7.0" 7
		fn_write2log "1.7.0" 7
		fn_write2log "1.8.1" 9
		fn_write2log "1.8.2" 9
		fn_write2log "2.8.1" 9
		fn_write2log "2.8.2" 9
		
	else
	then
		#in geval we meer dan 15 lijnen uitgelezen hebben, willen we cu stoppen
		#eerst het achtergrond proces terug naar de voorgrond brengen
		fg
		#dan afsluiten door de input te sturen met xdotool
		xdotool key ~.
	fi
done < $tempfile

#sluit script af
exit 0

**edit**

typo in eerste zin

 

**edit 2**

Comment aangepast: we gebruiken maar 2 parameters meer; geen 3

aangepast door De_Perre

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
×
×
  • Nieuwe aanmaken...