PellMon, pelletlogger med öppen källkod
Re: PellMon, pelletlogger med öppen källkod
Tja, sen jag gav upp försöken att vänta på rätt event och började polla svg:n tills det lyckas så var det väl i huvudsak bara anropet till setTimeout där jag lyckats få parametrarna var i fel ordning. Och javascript dynamiskt och hjälpsamt som det är så klagar inte då det får en integer istället för en funktionspointer och tvärtom, men fungerar gör det ju inte. Iphone klarade inte av getElementsByTagName("*") men nog getElementsByTagName("text") vilket fungerade lika bra då jag kom på det.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: PellMon, pelletlogger med öppen källkod
en högst okvalificerad input när john blund väntar...
för onekligen så ska ju getElementsByTagName fungera på de flesta browsers enligt spec
men man kan inte vända på det hela och använda:
getAttributeNode()
med ett "a" i (a)
??
för onekligen så ska ju getElementsByTagName fungera på de flesta browsers enligt spec
men man kan inte vända på det hela och använda:
getAttributeNode()
med ett "a" i (a)
??
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Kanske är detta en bättre väg att gå?
http://keith-wood.name/svg.html
http://keith-wood.name/svg.html
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
ja, nåt lurt är det , jag ska se om jag lyckas prova mitt egna förslag i förra inlägget;-)
såhär ser det ut om man försöker med chrome på mac

och liknande svar över explorer på win64

såhär ser det ut om man försöker med chrome på mac

och liknande svar över explorer på win64

Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Kanske du skulle uppgradera innan du sätter alltför mycket tid på att felsöka den gamla versionen? Det fungerar ju på iphone sedan i förrgår.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: PellMon, pelletlogger med öppen källkod
Nu förstod jag vad du menade med ("text)" i stället för ("*")


Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
ok,Honda skrev:
För ett 'hello world' test kan du leta uppi src/pellmonweb.pyKod: Markera allt
class PellMonWeb:
Och du måste alltså inte installera (make install) för att köra koden, starta det bara direkt från src med:Kod: Markera allt
./pellmonweb.py
navigerade till root@server1:/home/pellmon/PellMon-feature-processimage/src#
ändrade i pellmonweb.py
la in min fungerande .conf i ovanstående mapp men ändrade till port 8082 istället
provade att starta med ./pellmonweb.py
men lyckades bara få detta felmeddelande:
Kod: Markera allt
[05/Apr/2014:20:28:02] ENGINE Listening for SIGHUP.
[05/Apr/2014:20:28:02] ENGINE Listening for SIGTERM.
[05/Apr/2014:20:28:02] ENGINE Listening for SIGUSR1.
[05/Apr/2014:20:28:02] ENGINE Bus STARTING
[05/Apr/2014:20:28:02] ENGINE Starting WebSocket processing
[05/Apr/2014:20:28:02] ENGINE Started monitor thread 'Autoreloader'.
[05/Apr/2014:20:28:02] ENGINE Started monitor thread '_TimeoutMonitor'.
[05/Apr/2014:20:28:02] ENGINE PID 22084 written to '/tmp/pellmonweb.pid'.
[05/Apr/2014:20:28:02] ENGINE Serving on 0.0.0.0:8082
[05/Apr/2014:20:28:02] ENGINE Error in 'start' listener <bound method Dbus_handler.setup of <__main__.Dbus_handler instance at 0x1ebaef0>>
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 197, in publish
output.append(listener(*args, **kwargs))
File "./pellmonweb.py", line 114, in setup
self.bus = Gio.bus_get_sync(self.bustype, None)
File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
return info.invoke(*args, **kwargs)
GError: Error spawning command line `dbus-launch --autolaunch=54e31338fbd25014fad0064100000574 --binary-syntax --close-stderr': Failed to execute child process "dbus-launch" (No such file or directory)
[05/Apr/2014:20:28:02] ENGINE Shutting down due to error in start listener:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 235, in start
self.publish('start')
File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 215, in publish
raise exc
ChannelFailures: GError('Error spawning command line `dbus-launch --autolaunch=54e31338fbd25014fad0064100000574 --binary-syntax --close-stderr\': Failed to execute child process "dbus-launch" (No such file or directory)',)
[05/Apr/2014:20:28:02] ENGINE Bus STOPPING
[05/Apr/2014:20:28:02] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0', 8082)) shut down
[05/Apr/2014:20:28:02] ENGINE Stopped thread 'Autoreloader'.
[05/Apr/2014:20:28:02] ENGINE Terminating WebSocket processing
[05/Apr/2014:20:28:02] ENGINE Stopped thread '_TimeoutMonitor'.
[05/Apr/2014:20:28:02] ENGINE Bus STOPPED
[05/Apr/2014:20:28:02] ENGINE Bus EXITING
[05/Apr/2014:20:28:02] ENGINE PID file removed: '/tmp/pellmonweb.pid'.
[05/Apr/2014:20:28:02] ENGINE Bus EXITED
kanske är det bättre att ladda ner allt lokalt och köra en "wamp" istället på min windowsmaskin för att kunna prova mig fram?
Eller hur sitter du och hackar?
Edit:
Tror det blir bäst om jag sätter upp en pythonserver på min ubuntudesktop och kör mot localhost:8081
?
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Felet är att det finns ingen dbus sessionbus, du är alltså inloggad via ssh? Det finns ett kapitel i wikin som beskriver hur du startar en dbus sessionbus i den situationen, alternativt använder du systembussen som alltid är igång men den kräver att du konfigurerar rättigheter att använda systembussen, så det är lite mera krångel.
Om du loggar in 'grafiskt' tex i ubuntu-desktop så har du automatiskt en sessionsbuss startad och det 'bara funkar' utan extra besvär.
Om du med 'wamp' menar att porta pellmon till windows så är det absolut möjligt, men det är nog en hel del jobb.
Om du loggar in 'grafiskt' tex i ubuntu-desktop så har du automatiskt en sessionsbuss startad och det 'bara funkar' utan extra besvär.
Om du med 'wamp' menar att porta pellmon till windows så är det absolut möjligt, men det är nog en hel del jobb.
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: PellMon, pelletlogger med öppen källkod
Loggen fick flytta på sig för lite större och tydligare systembild:
Kod: Markera allt
<%inherit file="layout.html"/>
<%! scripts = ['spin.js','index.js','logview.js'] %>
<%def name="title()">
PellMon
</%def>
<div class="container">
<div class="row">
<div class="col-md-10">
<h4>System</h4>
<object id="systemimage" class="image-responsive" data="media/img/system.svg" type="image/svg+xml"> </object>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h4 class="graphtitle">Graph</h4>
<div>
${'<img style="margin-bottom:8px" class="graph image-responsive image-lazy" id="graph" data-title="%s" data-offset=0 data-timespan=%u data-src="graph" src="media/img/spinner.gif"'%(timeName, timeChoice)} />
</div>
<div id="center">
<div class="col-centered">
<p style="text-align: left">
%for line in graphlines[:-1]:
${'<a href="#" style ="border-top-color:%s" data-linename="%s" class="lineselection %s" data-selected="%s">%s</a> | ' % (line['color'], line['name'], 'selected' if line['name'] in selectedlines else '', 'yes' if line['name'] in selectedlines else 'no', line['name'])}
%endfor
%for line in [graphlines[-1]]:
${'<a href="#" style ="border-top-color:%s" data-linename="%s" class="lineselection %s" data-selected="%s">%s</a>' % (line['color'], line['name'], 'selected' if line['name'] in selectedlines else '', 'yes' if line['name'] in selectedlines else 'no', line['name'])}
%endfor
</p>
<p style="text-align: left">
%for index in range(len(timeSeconds)):
${'<a href="#" data-time-choice="%s" data-title-text="%s" class="timeChoice %s">%s</a> | ' % (timeSeconds[index], timeNames[index], 'selected' if timeChoice == timeSeconds[index] else '', timeNames[index])}
%endfor
<a href="#" class="left">go back </a>|
<a href="#" class="right">go forward </a>|
${'<a href="#" class="autorefresh %s">Autorefresh graph</a>' % ('selected' if autorefresh else '')}
</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h4>Consumption</h4>
<div>
<img class="graph image-responsive image-lazy" id="consumption" data-src="consumption" src="media/img/spinner.gif" />
</div>
</div>
<div class="col-md-6">
<h4>Silo level</h4>
<div>
<img class="graph image-responsive image-lazy" id="silolevel" data-src="silolevel" src="media/img/spinner.gif" />
</div>
</div>
</div>
</div>
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Jag har påbörjat arbetet med att få till en "suneffect" sida också:
i /usr/local/lib/python2.7/dist-packages/pellmonweb.py la jag till detta bara för att börja nånstans
och i laoyut.html:
och så skapade jag en suneffect.html:
och så skapade jag en "suneffect.py (kopierade consumption.py...) som lades i
/usr/local/lib/python2.7/dist-packages/Pellmonweb
Jag startade och stoppade "service pellmonweb restart"
ändringarna i befintliga html slog igenom men jag får inte igång min nya "suneffect.html
felkod på sidan http://www.minwebsida.se:8081/Suneffect/All
behöver jag göra en make install?
eller kan jag fuska igång det hela med ./pellmonweb.py ???
naturligtvis så behöver jag knyta "src="consumption24h"/>" och så vidare till min "effekt_solpaneler" istället men det får bli nästa steg:-)
edit:
behöver jag kanske också lägga till : ????
i /usr/local/lib/python2.7/dist-packages/pellmonweb.py la jag till detta bara för att börja nånstans
Kod: Markera allt
@cherrypy.expose
def suneffect(self, **args):
if not polling:
return None
if consumption_graph:
try:
maxWidth = args['maxWidth']
except:
maxWidth = '440'; # Default bootstrap 3 grid size
if int(maxWidth)>500:
rightaxis = '--right-axis 1:0'
else:
rightaxis = ''
now = int(time.time())
align = now/3600*3600
RrdGraphString = make_barchart_string(db, now, align, 3600, 24, '-', maxWidth, '24h consumption', 'kg/h', param=rightaxis)
cmd = subprocess.Popen(RrdGraphString, shell=True, stdout=subprocess.PIPE)
cherrypy.response.headers['Pragma'] = 'no-cache'
cherrypy.response.headers['Content-Type'] = "image/png"
return cmd.communicate()[0]
Kod: Markera allt
<a href="/Suneffect/All">Suneffect</a></li>
<li class="">
Kod: Markera allt
<%inherit file="layout.html"/>
<%def name="title()">
Suneffect
</%def>
<div class="container">
<div class="row">
<div class="col-md-6">
<h1>Last 24h</h1>
<div id="consumption24h">
<img class="img-responsive" src="consumption24h"/>
</div>
</div>
<div class="col-md-6">
<h1>Last week</h1>
<div id="consumption7d">
<img class="img-responsive" src="consumption7d"/>
</div>
</div>
<div class="col-md-6">
<h1>Last 2 months</h1>
<div id="consumption1m">
<img class="img-responsive" src="consumption1m"/>
</div>
</div>
<div class="col-md-6">
<h1>Last year</h1>
<div id="consumption1y">
<img class="img-responsive" src="consumption1y"/>
</div>
</div>
</div>
</div>
/usr/local/lib/python2.7/dist-packages/Pellmonweb
Jag startade och stoppade "service pellmonweb restart"
ändringarna i befintliga html slog igenom men jag får inte igång min nya "suneffect.html
felkod på sidan http://www.minwebsida.se:8081/Suneffect/All
Kod: Markera allt
404 Not Found
The path '/Suneffect/All' was not found.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 656, in respond
response.body = self.handler()
File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/cherrypy/_cperror.py", line 386, in __call__
raise self
NotFound: (404, "The path '/Suneffect/All' was not found.")
eller kan jag fuska igång det hela med ./pellmonweb.py ???
naturligtvis så behöver jag knyta "src="consumption24h"/>" och så vidare till min "effekt_solpaneler" istället men det får bli nästa steg:-)
edit:
behöver jag kanske också lägga till : ????
Kod: Markera allt
class PellMonWeb:
def __init__(self):
self.logview = LogViewer(logfile)
self.auth = AuthController(credentials)
self.consumptionview = Consumption(polling, db)
self.suneffectview = Suneffect(polling, db)
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Jag har inte kollat speciellt noga, men det verkar i stort sett ok. Ditt sista 'edit' tillägg fattades men det hittade du ju, då skulle jag tro att det du saknar är ett tillägg i src/Pellmonweb/__init__.py för att importera något från din nya modul suneffekt.py. I pellmonweb.py finns ett 'from Pellmonweb import *' vilket betyder att allt som är i Pellmonweb/__init__.py kommer att importeras.
Men har du bara tagit en kopia av consumption.py (med identiskt innehåll) så betyder det att du kan inte bara importera classen Consumption på nytt, den är ju redan importerad. Så du får börja med att döpa om classen Consumption i suneffekt.py till tex Suneffekt och lägga till följande i src/Pellmonweb/__init__.py:
from suneffekt import Suneffekt
Och den här raden:
self.suneffectview = Suneffect(polling, db)
i pellmonweb.py gör att din nya class 'Suneffect' kommer att bli tillgänglig från url '/suneffectview' vilket betyder att om classen Suneffekt fortfarande innehåller metoden
@cherrypy.expose
def consumption(self):
så kommer den exponerade metoden consumption att bli tillgänglig från url '/suneffectview/consumption'
Du skulle kunna lägga allt direkt i pellmonweby.py så skulle du slippa en hel del krångel med import av moduler och sånt. Jag är inte helt nöjd med upplägget som det är heller, det är mest ett resultat av att jag har provat mig fram, så det kan komma att ändra med tiden.
Och, försök få igång en fungerande utvecklingsmiljö, att hålla på och redigera de färdigt installerade systemfilerna är onödigt, svårt, krångligt och kommer att leda till att du bara sliter loss håret i onödan då det i princip är omöjligt att debugga koden på det viset. Och försök sluta att köra som root hela tiden med det samma, av samma orsak...
Har du tillgång till en linuxbaserad desktop så är det enklast. Har du inte det så kör in tex xubuntu i en virtuell maskin att koda och debugga i, och vill du köra via ssh på din server så går det också enligt info i wikin. Provade du att starta en sessionsbuss? Fungerade det inte?
Och för att svara direkt på din fråga, nej du behöver inte köra 'make install' då du redigerar filer i /usr. Det enda 'make install' gör är att flytta filerna till /usr så kör du installl så skriver du bara över dina ändringar och inget annat. Att köra ./pellmonweb från src är inget 'fusk' det är så det är tänkt att köra under utveckling, att köra en systeminstallation och redigera de installerade filerna är väl i så fall att 'fuska' om man ska använda det uttrycket
Kul att du är på gång, fråga på bara så klarnar det säkert så småningom!
Men har du bara tagit en kopia av consumption.py (med identiskt innehåll) så betyder det att du kan inte bara importera classen Consumption på nytt, den är ju redan importerad. Så du får börja med att döpa om classen Consumption i suneffekt.py till tex Suneffekt och lägga till följande i src/Pellmonweb/__init__.py:
from suneffekt import Suneffekt
Och den här raden:
self.suneffectview = Suneffect(polling, db)
i pellmonweb.py gör att din nya class 'Suneffect' kommer att bli tillgänglig från url '/suneffectview' vilket betyder att om classen Suneffekt fortfarande innehåller metoden
@cherrypy.expose
def consumption(self):
så kommer den exponerade metoden consumption att bli tillgänglig från url '/suneffectview/consumption'
Du skulle kunna lägga allt direkt i pellmonweby.py så skulle du slippa en hel del krångel med import av moduler och sånt. Jag är inte helt nöjd med upplägget som det är heller, det är mest ett resultat av att jag har provat mig fram, så det kan komma att ändra med tiden.
Och, försök få igång en fungerande utvecklingsmiljö, att hålla på och redigera de färdigt installerade systemfilerna är onödigt, svårt, krångligt och kommer att leda till att du bara sliter loss håret i onödan då det i princip är omöjligt att debugga koden på det viset. Och försök sluta att köra som root hela tiden med det samma, av samma orsak...
Har du tillgång till en linuxbaserad desktop så är det enklast. Har du inte det så kör in tex xubuntu i en virtuell maskin att koda och debugga i, och vill du köra via ssh på din server så går det också enligt info i wikin. Provade du att starta en sessionsbuss? Fungerade det inte?
Och för att svara direkt på din fråga, nej du behöver inte köra 'make install' då du redigerar filer i /usr. Det enda 'make install' gör är att flytta filerna till /usr så kör du installl så skriver du bara över dina ändringar och inget annat. Att köra ./pellmonweb från src är inget 'fusk' det är så det är tänkt att köra under utveckling, att köra en systeminstallation och redigera de installerade filerna är väl i så fall att 'fuska' om man ska använda det uttrycket

Kul att du är på gång, fråga på bara så klarnar det säkert så småningom!
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: PellMon, pelletlogger med öppen källkod
Tack för ett fylligt svar, jag ska se över testmiljön på något vis, kanske ställer jag en gammal burk som "testserver" alternativt en desktop. återkommer i frågan,
Vad gäller dagens exekveringsövningar så är det ett steg fram och ett bak,
denna sidan finns inte:
8081/suneffectview/consumption
ändrade i usr/local/lib/python2.7/distpackades/Pellmonweb/suneffect.py
till:
la till i _init_.py
lade till i pellmonweb.py
inga övriga ändringar, allt startar och är som vanligt förutom att själva suneffectsidan inte visas.
vad är det självklara misstaget?
(layout.html ser ok ut om du frågar mig.)
Vad gäller dagens exekveringsövningar så är det ett steg fram och ett bak,
denna sidan finns inte:
8081/suneffectview/consumption
ändrade i usr/local/lib/python2.7/distpackades/Pellmonweb/suneffect.py
till:
Kod: Markera allt
class Suneffect(object):
Kod: Markera allt
from suneffect import Suneffect, make_barchart_string
Kod: Markera allt
class PellMonWeb:
def __init__(self):
self.logview = LogViewer(logfile)
self.auth = AuthController(credentials)
self.consumptionview = Consumption(polling, db)
self.suneffectview = Suneffect(polling, db)
vad är det självklara misstaget?
(layout.html ser ok ut om du frågar mig.)
Kod: Markera allt
<li class="">
<a href="/consumptionview/consumption">Consumption</a>
</li>
<li class="">
<a href="/parameters/All">Parameters</a></li>
<li class="">
<a href="/suneffectview/consumption">
Suneffect</a>
</li>
<li class="">
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
Inte lätt att veta med några urklipp här och där, men dels så importerar du make_barchart_string två gånger från olika ställen och om class PellMonWeb ser ut så där i din fil så så hör raden self.suneffectview = Suneffect(polling, db) till classen och inte till funktionen __init__ så den kommer nog aldrig att exekveras . Du ser ju inga felmeddelanden då du kör programmet som en systemdaemon, det gör det väldigt mycket svårare att få till det. Enklaste sättet att debugga är annars att 'gödsla' med olika print 'nånting' här och där för att se vad som händer i programmet så starta med det men då måste du ju se stdout.
tar det från början:
ssh bosse@dinserver
wget https://github.com/motoz/PellMon/archive/master.zip
unzip master.zip
cd PellMon-master/src
cp pellmon.conf.in pellmon.conf
#redigera path till db och path till logfil, ev port nr
nano pellmon.conf
#starta dbus sessionsbus
eval `dbus-launch --sh-syntax`
#starta pellmonweb
./pellmonweb.py
tar det från början:
ssh bosse@dinserver
wget https://github.com/motoz/PellMon/archive/master.zip
unzip master.zip
cd PellMon-master/src
cp pellmon.conf.in pellmon.conf
#redigera path till db och path till logfil, ev port nr
nano pellmon.conf
#starta dbus sessionsbus
eval `dbus-launch --sh-syntax`
#starta pellmonweb
./pellmonweb.py
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger
Re: PellMon, pelletlogger med öppen källkod
har dragit igång min gamla bärbara linuxkärra, kör en full installation där, men så länge,
self.suneffect var feltabbad i inklippet men rätt i min fil.
samt ändrade till:
programmet skapar en "suneffect.pyc" men ingen "suneffect.pyo"
är detta en ledtråd till något?
self.suneffect var feltabbad i inklippet men rätt i min fil.
samt ändrade till:
Kod: Markera allt
from auth import AuthController, require, member_of, name_is
from logview import LogViewer
from suneffect import Suneffect
from consumption import Consumption, make_barchart_string
programmet skapar en "suneffect.pyc" men ingen "suneffect.pyo"
är detta en ledtråd till något?
Viking bio 20 i en vedolux 40, ackumulatortankar och 15m2 solfångare.
Re: PellMon, pelletlogger med öppen källkod
nä
Termax 25Cr med spaksotning, Bio Comfort + lambda + kompressorrengöring, 10m skorsten med 125mm insatsrör. 8t bulkförråd. Matene vertikalskruv. https://github.com/motoz/PellMon open source pelletlogger