Announcements & Updates

@peter patch 3.1.7 is up and running. Fingers crossed!

1 Like

Sorry @peter, the wfpiconsole froze.

:frowning: :frowning: - although not unexpected. Mine also froze this morning on v3.1.7. I have tried one more thing to try and force the console to reconnect once it has frozen. Can you give v3.1.8 a go with wfpiconsole patch. If there is no luck I will roll back over the weekend. Thanks!

Updated to 3.1.8 and things look good.

and mine is nicely running on 3.1.5 … go figure

And I’m running 3.1.1 and haven’t had any problems for a couple weeks.

found my console finaly frozen so I patched rebooted and now I get this in the log, knowing it shows outdoor temp and pressure (at least it filled the cases)

log shows this

pi@WF_console:~/wfpiconsole $ tail -f wfpiconsole.log 
2020-04-26 10:31:44+0200 [-] Log opened.
2020-04-26 10:31:47+0200 [-] Starting factory <__main__.WeatherFlowClientFactory object at 0x75c00d10>
2020-04-26 10:31:50+0200 [-] connection_opened
2020-04-26 10:31:50+0200 [-] ack
2020-04-26 10:31:50+0200 [-] obs_st
2020-04-26 10:31:59+0200 [WeatherFlowClientProtocol (TLSMemoryBIOProtocol),client] Unhandled Error
	Traceback (most recent call last):
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/log.py", line 103, in callWithLogger
	    return callWithContext({"system": lp}, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/log.py", line 86, in callWithContext
	    return context.call({ILogContext: newCtx}, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/context.py", line 122, in callWithContext
	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/context.py", line 85, in callWithContext
	    return func(*args,**kw)
	--- <exception caught here> ---
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/_threadedselect.py", line 276, in _doReadOrWrite
	    why = getattr(selectable, method)()
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/tcp.py", line 243, in doRead
	    return self._dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/tcp.py", line 249, in _dataReceived
	    rval = self.protocol.dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/tls.py", line 330, in dataReceived
	    self._flushReceiveBIO()
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/tls.py", line 295, in _flushReceiveBIO
	    ProtocolWrapper.dataReceived(self, bytes)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/policies.py", line 120, in dataReceived
	    self.wrappedProtocol.dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/websocket.py", line 135, in dataReceived
	    self._dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1180, in _dataReceived
	    self.consumeData()
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1192, in consumeData
	    while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1558, in processData
	    fr = self.onFrameEnd()
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1680, in onFrameEnd
	    self._onMessageEnd()
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/websocket.py", line 163, in _onMessageEnd
	    self.onMessageEnd()
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 628, in onMessageEnd
	    self._onMessage(payload, self.message_is_binary)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/websocket.py", line 166, in _onMessage
	    self.onMessage(payload, isBinary)
	  File "main.py", line 72, in onMessage
	    self.factory._app.WebsocketDecodeMessage(Message)
	  File "main.py", line 403, in WebsocketDecodeMessage
	    websocket.Tempest(Msg,self.Obs,self.config)
	  File "/home/pi/wfpiconsole/lib/websocket.py", line 135, in Tempest
	    Obs['StrikeDist']    = observation.Format(StrikeDist,'StrikeDistance')
	  File "/home/pi/wfpiconsole/lib/observationFormat.py", line 318, in Format
	    cObs[ii-1] = DispValues[DistValues.index(cObs[ii-1])]
	builtins.ValueError: 35 is not in list
	
2020-04-26 10:31:59+0200 [WeatherFlowClientProtocol (TLSMemoryBIOProtocol),client] Unhandled Error
	Traceback (most recent call last):
	  File "/usr/local/lib/python3.5/dist-packages/kivy/clock.py", line 581, in tick
	    self._process_events()
	  File "/usr/local/lib/python3.5/dist-packages/kivy/support.py", line 210, in reactor_work
	    q.popleft()()
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/_threadedselect.py", line 227, in _interleave
	    getattr(self, '_process_' + msg)(*args)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/_threadedselect.py", line 199, in _process_Notify
	    _logrun(selectable, _drdw, selectable, method, dct)
	--- <exception caught here> ---
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/log.py", line 103, in callWithLogger
	    return callWithContext({"system": lp}, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/log.py", line 86, in callWithContext
	    return context.call({ILogContext: newCtx}, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/context.py", line 122, in callWithContext
	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/python/context.py", line 85, in callWithContext
	    return func(*args,**kw)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/_threadedselect.py", line 286, in _doReadOrWrite
	    self._disconnectSelectable(selectable, why, method == "doRead")
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/posixbase.py", line 258, in _disconnectSelectable
	    selectable.connectionLost(failure.Failure(why))
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/tcp.py", line 519, in connectionLost
	    self._commonConnection.connectionLost(self, reason)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/tcp.py", line 327, in connectionLost
	    protocol.connectionLost(reason)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/tls.py", line 398, in connectionLost
	    self._flushReceiveBIO()
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/tls.py", line 295, in _flushReceiveBIO
	    ProtocolWrapper.dataReceived(self, bytes)
	  File "/usr/local/lib/python3.5/dist-packages/twisted/protocols/policies.py", line 120, in dataReceived
	    self.wrappedProtocol.dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/websocket.py", line 135, in dataReceived
	    self._dataReceived(data)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1180, in _dataReceived
	    self.consumeData()
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1192, in consumeData
	    while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1550, in processData
	    fr = self.onFrameData(payload)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 1645, in onFrameData
	    self._onMessageFrameData(payload)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/twisted/websocket.py", line 154, in _onMessageFrameData
	    self.onMessageFrameData(payload)
	  File "/usr/local/lib/python3.5/dist-packages/autobahn/websocket/protocol.py", line 602, in onMessageFrameData
	    self.frame_data.append(payload)
	builtins.AttributeError: 'NoneType' object has no attribute 'append'

edit, did another reboot and opened log quicker giving more details i put above instead original log, they both contains same lines except I get a few more this time

hope this helps somehow

Thanks for updating the log - the second one is much easier to understand. Looks like there is a small bug in the lighting distance. I’ll get a fix sorted ASAP.

1 Like

Should be all fixed now. You can use the patch command to jump to v3.1.9.

patched and running again, all fields populated

pi@WF_console:~/wfpiconsole $ tail -f wfpiconsole.log 
2020-04-26 12:19:45+0200 [-] Log opened.
2020-04-26 12:19:48+0200 [-] Starting factory <__main__.WeatherFlowClientFactory object at 0x768209f0>
2020-04-26 12:19:50+0200 [-] connection_opened
2020-04-26 12:19:51+0200 [-] ack
2020-04-26 12:19:51+0200 [-] obs_st
2020-04-26 12:20:09+0200 [-] ack
2020-04-26 12:20:09+0200 [-] ack
2020-04-26 12:20:09+0200 [-] obs_air
2020-04-26 12:20:35+0200 [-] obs_air
2020-04-26 12:20:39+0200 [-] obs_st

logs till now

Looks good! Just to note, this bug may crop up again if WF adjust the lightning strike distance bins on the Tempest. David has mentioned this might be the case

2 Likes

Just a quick update. My console has NOT froze in well over 24 hours on 3.1.8.

Now that is good news! Any chance you could send me the entire contents of your wfpiconsole.log file as an attachment here? You can transfer the whole file from your Raspberry Pi to your PC/Mac by right clicking on the VNC icon on the Pi desktop and selecting File Transfer...

Ok, here is the file after the transfer option. Well, the file would not upload as an attached *.txt file so I made a PDF of the file, perhaps the text file is too large as it worked previous files.

wfpiconsole log april 26.pdf (183.7 KB)

Thanks - that all looks good. From the log I can see that the websocket connection has timed out twice (which is expected), but it has happily reconnected within 5 minutes (which is normal behaviour). I think the freezing you were seeing was because the websocket was not reconnecting in the past. Let’s give it a few more days and then hopefully we can say this bug is fully squashed :+1:

1 Like

@peter, my wfpiconsole has been happily working since I installed 3.1.8 on April 24.

That’s great news! I think we can finally say this bug is fixed for good :smiley: . I will go ahead and incorporate all the changes we made into a new release ASAP. Thanks for all the help

2 Likes

New release (v3.2) of the WeatherFlow PiConsole. Changes include:

  • Fixed a bug that caused the console to freeze (thanks @padieter)
  • Implemented threading to make the console more responsive
  • Added mouse support for Raspberry Pi 3 (@hankster)
  • Lots of bug fixes and improvements

Update using wfpiconsole update

The mouse support is limited, but should be sufficient to navigate the console when running on a non-touchscreen. Note the mouse must be connected to the Pi before you start the console.

1 Like

New release (v3.3) of the WeatherFlow PiConsole. Changes include:

  • New solar/UV panel
  • Updated lightning distance display for Tempest
  • API calls are now repeated if Websocket connection is lost
  • Lots of bug fixes and performance improvements

For those new to using the console, first stop the current console with wfpiconsole stop. Then update using wfpiconsole update

This version introduces a new solar/UV panel. There is a new day/night/dawn/dusk bar that graphically represents the length of each period of the day, as well as the progress of the sun through the day. It also introduces a new metric: Peak Sun Hours. This is a measure of how effective solar panels will be given the observed solar radiation.

Capture

@kbeast this version should fix the rain/lightning discrepancies you were seeing

6 Likes

New release (v3.4) of the WeatherFlow PiConsole. Changes include:

  • Bug fixes and performance improvements

For those new to using the console, first stop the console with wfpiconsole stop . Then update using wfpiconsole update

PLEASE NOTE: any local changes you may have made to the code will be overwritten by the update command. I suggest you backup your changes before updating (@stevecody, @marcow46)

3 Likes